Python使用Pandas库常见操作详解
本文实例讲述了Python使用Pandas库常见操作。分享给大家供大家参考,具体如下:
1、概述
pipinstallpandas
2、数据对象的创建
importpandasaspd importnumpyasnp #通过一维数组初始化Series s=pd.Series([1,2.0,np.nan,'test']) print(s) #通过二维数组初始化DataFrame arr=np.random.randn(6,4) arr_df=pd.DataFrame(arr,index=np.arange(1,7),columns=list('ABCD')) print(arr_df) #通过字典dict初始化DataFrame dic={'A':1., 'B':pd.Timestamp('20130102'), 'C':pd.Series(1,index=list(range(4)),dtype='float32'), 'D':np.array([3]*4,dtype='int32'), 'E':pd.Categorical(["test","train","test","train"]) } dic_df=pd.DataFrame(dic) print(dic_df)
#Series数据 01 12 2NaN 3test dtype:object #二维数组的DataFrame ABCD 1-0.085417-0.8165021.495134-0.277742 21.657144-0.2033460.631930-1.182239 3-2.303923-0.5356961.3153790.129682 40.133198-0.239664-2.0044940.119965 5-1.4547172.114255-0.538678-0.580361 6-0.7591830.141554-0.2432702.840325 #dict字典DataFrame ABCDE 01.02013-01-021.03test 11.02013-01-021.03train 21.02013-01-021.03test 31.02013-01-021.03train
3、查看数据
arr=np.random.randn(6,4) df=pd.DataFrame(arr,index=np.arange(1,7),columns=list('ABCD')) print(df.head(3)) print(df.index) print(df.describe())
#查看前三行数据 ABCD 13.260449-0.6193960.0708771.586914 2-0.5297080.071917-1.9193161.845727 3-1.0057652.176579-0.323483-1.295067 #查看行标签 Int64Index([1,2,3,4,5,6],dtype='int64') #查看统计信息 ABCD count6.0000006.0000006.0000006.000000 mean-0.184606-0.4871840.0794330.855810 std1.7213941.8004601.3794981.128764 min-1.443635-3.091446-1.919316-1.295067 25%-0.967105-1.430192-0.2811880.778729 50%-0.694488-0.273739-0.0417131.150944 75%-0.5317440.1977550.3557311.508475 max3.2604492.1765792.3521421.845727
4、数据的选择
#选取一个列A,等价于df['A'] print(df.A) #选取第1到第3行,行下标从0开始 print(df[1:3]) ''' #标签为A的那一列 10.644427 20.643149 31.374668 4-0.154465 5-0.338085 6-1.989284 Name:A,dtype:float64 #第1~3行 ABCD 20.6431491.769001-0.166028-0.036854 31.374668-0.118593-0.2022220.308353 '''
#取出行标签为2的那一行 print(df.loc[2]) #取出行标签为1~3,列标签为'A','B'的内容 print(df.loc[1:3,['A','B']]) #获取行标签为1,列标签为'A'的具体值,等价于df.at[1,'A'] print(df.loc[1,'A']) ''' #标签为2的一行 A0.681469 B-0.053046 C-1.384877 D-0.447700 Name:2,dtype:float64 #标签为1~3,列标签为'A','B'的内容 AB 10.710907-0.950896 20.681469-0.053046 30.7819810.123072 #行标签为1,列标签为'A'的具体值 0.7109074858947351 '''
#取出第一行,行下标从0开始 print(df.iloc[0]) #显示第1,2,4行的第0,2列 print(df.iloc[[1,2,4],[0,2]]) #显示第1行第1列的具体值,等价于df.iat[1,1] print(df.iloc[1,1])
#输出A那一列大于0的所有行 print(df[df.A>0]) df['E']=['one','one','two','three','four','three'] #输出E那一列存在two、four的所有行 print(df[df['E'].isin(['two','four'])]) ''' ABCD 30.168998-0.732362-0.0985420.413128 50.513677-0.163231-0.098037-0.606693 ABCDE 30.168998-0.732362-0.0985420.413128two 50.513677-0.163231-0.098037-0.606693four '''
5、操作数据
df=pd.DataFrame(data=[['lisa','f',22],['joy','f',22],['tom','m','21']], index=[1,2,3],columns=['name','sex','age']) citys=['ny','zz','xy'] #在第0列,加上column名称为city,值为citys的数值。 df.insert(0,'city',citys) jobs=['student','AI','teacher'] #默认在df最后一列加上column名称为job,值为jobs的数据。 df['job']=jobs #若df中没有index为“4”的这一行的话,则添加,否则修改 df.loc[4]=['zz','mason','m',24,'engineer'] print(df) #删除行标签为1的行 dp=df.drop(index=1) print(dp) #在原数据集上删除列标签为sex的列 df.drop(columns=['sex'],inplace=True) print(df)
#添加后的数据 citynamesexagejob 1nylisaf22student 2zzjoyf22AI 3xytomm21teacher 4zzmasonm24engineer #删除第一行 citynamesexagejob 2zzjoyf22AI 3xytomm21teacher 4zzmasonm24engineer #删除sex列 citynameagejob 1nylisa22student 2zzjoy22AI 3xytom21teacher 4zzmason24engineer
print(df.T) si=df.sort_index(axis=1,ascending=False) print(si) sv=df.sort_values(by='A') print(sv) #应用匿名函数,用每一列最大值减去最小值 df.apply(lambdax:x.max()-x.min()) print(df) ''' #数据转置 123456 A-1.176180-1.3017680.907088-1.5281011.098978-1.280193 B-0.461954-0.7496421.169118-0.2977650.531088-0.999842 C-1.715094-0.5128560.511861-0.2472401.696772-0.902995 D1.3369990.2090912.2543370.649625-0.049886-1.514815 #按列标签倒序 DCBA 11.336999-1.715094-0.461954-1.176180 20.209091-0.512856-0.749642-1.301768 32.2543370.5118611.1691180.907088 40.649625-0.247240-0.297765-1.528101 5-0.0498861.6967720.5310881.098978 6-1.514815-0.902995-0.999842-1.280193 #按列A的值递增对行排序 ABCD 4-1.528101-0.297765-0.2472400.649625 2-1.301768-0.749642-0.5128560.209091 6-1.280193-0.999842-0.902995-1.514815 1-1.176180-0.461954-1.7150941.336999 30.9070881.1691180.5118612.254337 51.0989780.5310881.696772-0.049886 #函数的应用 A2.073961 B2.671590 C1.785291 D0.000000 F4.000000 dtype:float64 '''
#将第一行和最后一行拼接 print(pd.concat([df[:1],df[-2:-1]])) #将第4行追加到结尾 print(df.append(df.iloc[3])) #将两个DataFrame按列拼接 df1=pd.DataFrame({'row1':['foo','bar'],'row2':[1,2]}) df2=pd.DataFrame({'row1':['foo','bar'],'row3':[4,5]}) print(pd.merge(df1,df2)) ''' #按行拼接 ABCD 1-0.527221-0.754650-2.385270-2.569586 50.0540591.443911-0.240856-1.501045 #追加 ABCD 1-0.527221-0.754650-2.385270-2.569586 22.123332-0.013431-0.574359-0.548838 3-0.244057-0.2678051.089026-0.022174 4-0.7892281.1719060.5263180.046655 50.0540591.443911-0.240856-1.501045 60.7568440.623305-0.5972990.034326 4-0.7892281.1719060.5263180.046655 #按列拼接 row1row2row3 0foo14 1bar25 '''
df=pd.DataFrame({'A':['foo','bar','foo','bar'], 'B':['one','two','one','three'], 'C':np.random.randn(4), 'D':np.random.randn(4)}) #按A、B两列进行分组 dg=df.groupby(['A','B']) for(index,df)indg: print(df) #压缩 print(df.stack()) ''' #按列分组 ABCD 3barthree0.8020271.338614 ABCD 1bartwo-0.5672950.608978 ABCD 0fooone-0.17592-0.191991 2fooone-0.722580.711312 #压缩为两列 0Afoo Bone C0.622471 D0.10633 1Abar Btwo C0.065516 D-0.844223 2Afoo Bone C0.0013226 D-1.3328 3Abar Bthree C-0.678077 D0.785117 dtype:object '''
6、其他
#将DataFrame写入csv文件 df.to_csv('foo.csv') #从csv文件读数据 df=pd.read_csv('foo.csv') #excel文件的读写 df=pd.read_excel('foo.xlsx','Sheet1',index_col=None,na_values=['NA']) df.to_excel('foo.xlsx',sheet_name='Sheet1')
#从2019年1月1日开始,以秒为单位,生成五个时间 rng=pd.date_range('1/1/2019',periods=5,freq='S') ts=pd.Series(np.random.randint(0,500,len(rng)),index=rng) print(ts) ''' 2019-01-0100:00:01161 2019-01-0100:00:02214 2019-01-0100:00:03110 2019-01-0100:00:04265 Freq:S,dtype:int32 '''
ts=pd.Series(np.random.randint(0,500,len(rng)),index=rng) #将数据追加到一个数组统一显示 ts=ts.cumsum() #调用matplot绘制图 ts.plot()
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数学运算技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。