pandas
定义:
Pandas 是 Python 数据分析工具链中最核心的库,充当数据读取、清洗、分析、统计、输出的高效工具。
Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。
Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。
Pandas是基于NumPy构建的专门为处理表格和混杂数据设计的Python库,核心设计理念包括:
- 标签化数据结构:提供带标签的轴
- 灵活处理缺失数据:内置NaN处理机制
- 智能数据对齐:自动按标签对齐数据
- 强大IO工具:支持从CSV、Excel、SQL等20+数据源读写
- 时间序列处理:原生支持日期时间处理和频率转换
Python + Pandas的使用场景:数据清洗,统计分析,可视化等
功能特色:算法和分析部署核心
一,datatime与series区别
二,pandas series(一维)
1.series创建
importnumpyasnpimportpandasaspd#需要引用这些模块a=pd.Series([2,5,3])print(a)#左边是默认索引右边是数组
字典创建:
a=pd.Series({'张三':10,'张二':15,'张大':18},name='年龄')print(a)b=pd.Series(a,index=['张三','张大'])print(b)# 定义标签和使用index修改默认索引a=pd.Series([2,5,3],index=['a','b','c'],name='次数')print(a)2.series属性
print(a.index)print(a.values)print(a.shape,a.size,a.ndim)print(a.dtypes)print(a.name)上面的这些属性跟numpy一样你可以看上一篇具体结果不展示了
print(a.loc['张三'])#显示print(a.loc['张三':'张二'])#可以切片print(a.iloc[1])#隐示print(a.iloc[0:2])print(a.at['张大'])#不支持切片,标签访问print(a.iat[0])#位置访问3.访问数据
print(a['张三'])#根据索引访问print(a[a>11])#根据value值a#直接访问a=pd.Series([2,5,3,6,7,9])print(a.head())#默认打前5行填数字就是获取几行print(a.tail(2))#默认结尾5行可以自己写几行4.series常用方法
先创建一个Series
importnumpyasnp a=pd.Series([2,5,3,6,7,9,None,np.nan],index=['a','b','c','d','e','f','g','h'],name='次数')print(a)a.value_counts()#出现次数这里np.nan和None是缺失值所以只输出了6
a.count()去重:返回列表
a['a']=3#把原来的a对应的2改成了3去重后不算Nan的数值结果位有效个数
print(a.nunique())去掉重复行,得到的去重后的series
print(a.drop_duplicates())随机取样两个不写就默认取样一个
a.sample(2)默认从小到大按索引排序
a.sort_index()从大到小
a.sort_index(ascending=False)按values值排序
a.sort_values()把所有的2改成7
a.replace({2:7})改单个
a['a']=3获取索引
print(a.keys())#方法print(a.index)#属性查看所有描述性信息
a.describe()判断缺失值检查每一个元素
print(a.isna())判断某些元素在集合中
a.isin([3,5])取多少分位数
print(a.quantile(0.5))#取50%三,pandas Datatime(二维)
1.Datatime创建
series创建:
importnumpyasnpimportpandasaspd a=pd.Series([2,5,3])b=pd.Series([2,5,9])c=pd.DataFrame({"第一列":a,"第二列":b})print(c)
字典创建:
c=pd.DataFrame({"name":["张三","张二","张大","王二狗","李二麻"],"score":[20,92,59,90,5],"age":[15,19,20,17,19]},index=[1,2,3,4,5],columns=["name","age","score"]#使用colums改变列的顺序原本是name score age)c#输出2.Datatime属性
print('行索引:',c.index)print('列标签:',c.columns)print('值',c.values)print('维度:',c.ndim)print('形状:',c.shape)print('元素个数:',c.size)print('数据类型:')print(c.dtypes)置换行列
c.T原来五行三列现在三行五列
查看行
print(c.loc[2])print(c.iloc[1])#这个是用位置看的所以结果相同0.1查看列
print(df.loc[:,'name'])print(df.iloc[:,0])查看单个元素
print(c.at[3,'score'])print(c.iat[2,1])print(c.loc[3,'score'])print(c.iloc[2,1])获取单列数据
四种方法
print(c['name'])print(c.name)print(c[['name']])c[['name']]获取多列
print(c.name,c.score)3.Datatime常用方法
print(df.head(2))print(df.tail(3))查看元素是否包含在参数集合中
print(c.isin(['直立千古',20]))查看元素是否是缺失值
print(c.isna())#这里没有所以全是False和,大小,等等
print(c['score'].sum())#某一列的总和print(df.score.max())#最大值print(df.age.min())#最小值print(df.score.mean())#平均数print(df.score.median())#中位数print(df.age.mode())#众数print(c['score'].sum())#某一列的总和print(c.score.max())#最大值print(c.age.min())#最小值print(c.score.mean())#平均数print(c.score.median())#中位数print(c.age.mode())#众数print(c.score.std())#标准差print(c.score.var())#方差print(c.score.quantile(0.25))#分位数print(c.value_counts())#出现的次数print(c.count())#每一列非缺失值的个数print(c.drop_duplicates())print(c.drop_duplicates(subset=['age']))#只去固定列的c.sample(2)#随机取样print(c.replace(15,30))#替换所有的15不会改行列名print(c.sort_index(ascending=False))#按索引排序从大到小print(c.sort_values(by=['score',‘age’],ascending=[False,True]))#按成绩从大到小排序如果成绩一样按年龄排序取出最大的几个,并从大到小排序如果成绩一样年龄大在上面
c.nlargest(2,columns=['score','age'])取最小的几个,反之
c.nsmallest(2,columns=['score','age'])累加
c.cumsum()c.score.cumsum()#固定行累加c.age.cummax(axis=0)#因为我行里面有字符串所以axis不能=1找出累计的最大值多个的话只能这么写
c[['age','score']].cummax(axis=0)找出累计最小值
c.cummin(axis=0)