Python 数据分析—第九章 数据聚合与分组运算

打算从后往前来做笔记

第九章 数据聚合与分组运算

分组

#生成数据,五行四列
df = pd.DataFrame({'key1':['a','a','b','b','a'],
                  'key2':['one','two','one','two','one'],
                  'data1':np.random.randn(5),
                  'data2':np.random.randn(5)})
df

#可以按照key1分组计算data1的平均值
df.loc[:,'data1'].groupby(df.loc[:,'key1']).mean()

 

#可以按照key1,key2分组计算data1的平均值
df.loc[:,'data1'].groupby([df.loc[:,'key1'],df.loc[:,'key2']]).mean()

#两个键分组后可以unstack
temp = df.loc[:,'data1'].groupby([df.loc[:,'key1'],df.loc[:,'key2']]).mean()
temp.unstack()

注意:这里分组忽略null值,另外groupby()括号里可以选择axis = 0 或者1,表示按照航或者列来分组,同时如果df['列名'].groupby()这样就只有这列会group,不然就是全部数据groupby,groupby()里面还可以传入函数比如len

 

聚合



df.groupby('key1').std() #还有count(),sum(),mean(),median()std,var,min,max,prod,first,last

#可以自定义函数
df.groupby('key1').agg([lambda x : x.max()-x.min(),np.mean,np.std])

 

#可以自定义函数
df.groupby('key1').agg([('自定义函数',lambda x : x.max()-x.min()),('均值',np.mean),('标准差',np.std)])

#不同列做不同的动作,一个取最大值,一个取最小值
df.groupby('key1').agg({'data1':np.max,'data2':np.min})
df.groupby('key1').agg({'data1':[np.max,np.size,np.mean],'data2':np.min})  #这个超级吊

 

 

透视表和交叉表

tips.pivot_table(index='sex',columns='time',values='total_bill',aggfunc=np.sum,margins=True,fill_value=0)

对照这个东西看就都懂了,index代表了行,columns代表了列,values代表值,然后aggfunc代表取sum,还是mean,margins代表是否显示汇总,fill_value填充缺失值

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2018-03-29 17:17  慢慢来会比较快  阅读(345)  评论(0编辑  收藏  举报