pandas库笔记
2019-08-18 本文已影响0人
非鱼2018
1.系列Series
2.数据帧dataFrame
3.分组groupby
4.dataframe生成html以及excel
#codeing=utf-8
import pandas as pd
import numpy as np
#1.系列(Series)
#通过列表创建系列
list1=[1,2,3,4,5]
data=np.array(['a','b','c','d'])
s=pd.Series(list1)
#指定索引,默认索引是从0开始
s2=pd.Series(data,index=[1,2,3,4])
#通过字典创建系列
data2= {'a' : 0.,'b' : 1.,'c' : 2.}
s3=pd.Series(data2)
#常量创建
s4=pd.Series(1,index=[1,2,3,4])
#读取系列
print(s)
print(s3)
print(s4)
print(s4[1:])
#2数据帧(dataframe)
df=pd.DataFrame()
data= [1,2,3,4,5]
df= pd.DataFrame(data,index=[1,2,3,4,5],columns=['name'])
data= [['zs',10],['ls',12],['ww',13]]
df= pd.DataFrame(data,columns=['Name','Age'],dtype=float)
#比较常用的创建方法(name、age为列)
data= {'Name':['Tom','Jack','Steve','Ricky'],'Age':[28,34,29,42]}
df= pd.DataFrame(data,index=['rank1','rank2','rank3','rank4'])
print(df)
#通过字典列表
data= [{'a': 1,'b': 2},{'a': 5,'b': 10,'c': 20}]
df= pd.DataFrame(data)
#从系列的字典来创建DataFrame
d= {'one' : pd.Series([1,2,3],index=['a','b','c']),
'two' : pd.Series([1,2,3,4],index=['a','b','c','d'])}
df= pd.DataFrame(d)
#3.合并行,使用groupby分组函数,再对其余列进行处理,再进行重建索引
#如果分组后还有多个列处理,可分别处理后,再使用merge合并
#group by经常用于数据分组求和求平均等等,
data= {'card': ['home','home','home','add-card','add-card'],
'app_name': ['channel','channel','channel','IT','IT'],
'page':['channel1','channel2','channel3','IT1','IT2'],
'url':['url1','url2','url3','url4','url5']
}
df= pd.DataFrame(data)
#增加一列
#df['full_url']=df.apply(lambda x: str(x['app_name']) +'|' +str(x['page']),axis=1)
df1= df.groupby(['card','app_name'])['url'].apply(lambda x: ','.join(x)).reset_index()
df2= df.groupby(['card','app_name'])['page'].apply(lambda x: ','.join(x)).reset_index()
pd3=pd.merge(df1,df2)
print(pd3)
#4使用pandas生成excel和html非常方便
df.to_html('report.html',index=False)
df.to_excel("output.xlsx",sheet_name='SHEET1')
</pre>