Pandas实现groupby分组统计方法实例
作者:笑 瘾
在数据处理的过程,有可能需要对一堆数据分组处理,例如对不同的列进行agg聚合操作(mean,min,max等等),下面这篇文章主要给大家介绍了关于Pandas实现groupby分组统计方法的相关资料,需要的朋友可以参考下
一、如何实现分组统计
groupby:先对数据分组,然后在每个分组上应用聚合函数、转换函数
通过三个实例来了解pandas是如何实现分组统计的
一、分组使用聚合函数做数据统计
二、遍历groupby的结果理解执行流程
三、实例分组探索天气数据
导入数据
import pandas as pd import numpy as np # 加上这一句,能在jupyter notebook展示matplot图表 #%matplotlib inline 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)}) df
二、分组使用聚合函数做数据统计
1、单个列groupby,查询所有数据列的统计
我们看到:
groupby中的'A'变成了数据的索引列
因为要统计sum,但B列不是数字,所以被自动忽略掉
df.groupby('A').sum()
2、多个列groupby,查询所有数据列的统计
我们看到:(‘A’,‘B’)成对变成了二级索引
df.groupby(['A','B']).mean()
3、同时查看多种数据统计
我们看到:列变成了多级索引
df.groupby('A').agg([np.sum, np.mean, np.std])
4、查看单列的结果数据统计
# 方法1:预过滤,性能更好 df.groupby('A')['C'].agg([np.sum, np.mean, np.std])
# 方法2 df.groupby('A').agg([np.sum, np.mean, np.std])['C']
5、不同列使用不同的聚合函数
df.groupby('A').agg({"C":np.sum, "D":np.mean})
三、遍历groupby的结果理解执行流程
for循环可以直接遍历每个group
1、遍历单个列聚合的分组
g = df.groupby('A') for name,group in g: print(name) print(group) print()
1.1、可以获取单个分组的数据
g.get_group('bar')
2、遍历多个列聚合的分组
g = df.groupby(['A', 'B']) for name,group in g: print(name) print(group) print() #可以看到,name是一个2个元素的tuple,代表不同的列
g.get_group(('foo', 'one'))
四、实例分组探索天气数据
fpath = "./datas/beijing_tianqi_2018.csv" df = pd.read_csv(fpath) # 替换掉温度的后缀℃ df.loc[:, "bWendu"] = df["bWendu"].str.replace("℃", "").astype('int64') df.loc[:, "yWendu"] = df["yWendu"].str.replace("℃", "").astype('int64') df.head()
# 新增一列为月份 df['month'] = df['ymd'].str[:7] df.head()
1、查看每个月的最高温度
data = df.groupby('month')['bWendu'].max() data
type(data)
pandas.core.series.Series
2、查看每个月的最高温度、最低温度、平均空气质量指数
df.head()
group_data = df.groupby('month').agg({"bWendu":np.max, "yWendu":np.min, "aqi":np.mean}) group_data
总结
到此这篇关于Pandas实现groupby分组统计的文章就介绍到这了,更多相关Pandas实现groupby分组统计内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!