import numpy as np
import pandas as pd
"""
本节主要介绍pandas怎样实现groupby分组统计
1.分组使用聚合函数做数据统计
2.遍历groupby的结果理解执行流程
3.实例分组探索天气数据
"""
df = pd.DataFrame({
'A':['foo','bar','foo','bar','foo','bar','foo','foo'],
'B':['one','one','two','three','two','two','one','three'],
'C':np.random.randn(8),
'D':np.random.randn(8)
})
#print(df)
# 单个列groupby,查询所有数据列的统计
value_1 = df.groupby('A').sum()
#print(value_1) # groupby中的A变成了数据的索引列,因为是sum,但B列不是数字,所以会被省略掉
# 多个列groupby,查询所有数据列的统计
value_2 = df.groupby(['A','B']).mean()
#print(value_2)
# 使A,B不会变成索引
value_3 = df.groupby(['A','B'],as_index=False).mean()
# 查看多种数据统计
value_4 = df.groupby('A').agg([np.mean,np.sum,np.std])
# print(value_4)
# 查看单列的结果数据统计
# 方法1:预过滤,性能更好
value_5 = df.groupby('A')['C'].agg([np.mean,np.sum,np.std])
# 方法2
value_6 = df.groupby('A').agg([np.sum,np.mean,np.std])['C']
#print(value_6)
# 不同列,使用不同的聚合函数
value_7 = df.groupby('A').agg({'C':np.sum,'D':np.mean})
#print(value_7)
# 二.遍历groupby的结果理解执行流程
# for循环可以直接遍历每个group
# 1.遍历单个列聚合的分组
g = df.groupby('A')
for name,group in g:
pass
# print(name)
# print(group)
# 可以获取单个分组的数据
value_8 = g.get_group('bar')
# 2.遍历多个列聚合后的分组
g = df.groupby(['A','B'])
for name,group in g:
pass
#print(name)
#print(group)
value_9 = g.get_group(('foo','one'))
# 可以直接查询group后的某几列,生成series或者dataframe
#print(g['C'])
for name,group in g['C']:
pass
#print(name)
#print(type(group))
"""
其实所有的聚合统计,都是在dataframe和series上面进行的
"""
# 三.实例分组探索天气数据
fpath = './test.csv'
df = pd.read_csv(fpath)
# 替换掉温度符号C
df.loc[:,'bwendu'] = df['bwedu'].str.replace('C','').astype('int32')
df.loc[:,'ywendu'] = df['ywendu'].str.replace('C','').astype('int32')
# 新增一列为月份
df['month'] = df['ymd'].str[:7]
# 查看每个月的最高温度
value_9 = df.groupby('month')['bwendu'].max()
# 查看每个月的最高温度,最低温度,平均空气质量指数
value_10 = df.groupby('month').agg({'bwendu':np.max,'ywendu':np.min,'api':np.mean})
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)