1, 知识点总结
单个聚合函数
df.groupby('a').sum()
多个聚合函数
df.groupby('a').agg([np.sum,np.mean]) #2个聚合函数适用于所有数值列
df.groupby('a').agg({'b':np.sum,'c':np.mean}) #针对不同列使用不同聚合函数
2,数据输入
tianqi = pd.read_excel('./tianqi.xlsx')
tianqi['bWendu'] = tianqi['bWendu'].str.replace('℃','').astype('int32')
tianqi['yWendu'] = tianqi['yWendu'].str.replace('℃','').astype('int32')
df = tianqi
3,groupby后使用聚合函数
#单列
df.groupby('tianqi').mean()
#多列
df.groupby(['tianqi','fengxiang']).mean()
df_groupby = df.groupby(['tianqi','fengxiang'],as_index=False).mean()
#同时使用多种函数
df.groupby('tianqi').agg([np.mean,np.max])
#查看单列的统计结果
df.groupby('tianqi')['bWendu'].agg([np.mean,np.max])
df.groupby('tianqi').agg([np.mean,np.max])['bWendu']
#不同列使用不同聚合函数
df.groupby('tianqi').agg({'bWendu':np.max,'yWendu':np.min})
4,遍历groupby的结果理解流程
#单个列
g = df.groupby('tianqi')
for name,group in g:
print(name)
print(group)
print('***********')
#取得单个组
g.get_group('雷阵雨')
#多个列
gs = df.groupby(['fengxiang','fengli'])
for name,group in gs:
print(name)
print(group)
print('***********')
#取得单个组
gs.get_group(('西风','微风'))
5,plot
df['month'] =df['ymd'].apply(lambda x: str(x)[:7])
#每个月的最高温
data = df.groupby('month')['bWendu'].max()
data.plot()
#每个月的最高温、最低温
data = df.groupby('month').agg({'bWendu':np.max,'yWendu':np.min})
data.plot()