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

Pandas怎样实现groupby分组统计

二、分组使用聚合函数做数据统计

1、单个列groupby,查询所有数据列的统计

我们看到:

    groupby中的'A'变成了数据的索引列
    因为要统计sum,但B列不是数字,所以被自动忽略掉
df.groupby('A').sum()

Pandas怎样实现groupby分组统计
2、多个列groupby,查询所有数据列的统计

我们看到:(‘A’,’B’)成对变成了二级索引

df.groupby(['A','B']).mean()

Pandas怎样实现groupby分组统计
3、同时查看多种数据统计
我们看到:列变成了多级索引
df.groupby('A').agg([np.sum, np.mean, np.std])

Pandas怎样实现groupby分组统计
4、查看单列的结果数据统计
方法1:预过滤,性能更好
df.groupby('A')['C'].agg([np.sum, np.mean, np.std])

Pandas怎样实现groupby分组统计
方法2
df.groupby('A').agg([np.sum, np.mean, np.std])['C']

Pandas怎样实现groupby分组统计
5、不同列使用不同的聚合函数
df.groupby('A').agg({"C":np.sum, "D":np.mean})

Pandas怎样实现groupby分组统计

三、遍历groupby的结果理解执行流程

for循环可以直接遍历每个group

1、遍历单个列聚合的分组

g = df.groupby('A')
for name,group in g:
    print(name)
    print(group)
    print()

Pandas怎样实现groupby分组统计
1.1、可以获取单个分组的数据
g.get_group('bar')

Pandas怎样实现groupby分组统计
2、遍历多个列聚合的分组
g = df.groupby(['A', 'B'])
for name,group in g:
    print(name)
    print(group)
    print()
#可以看到,name是一个2个元素的tuple,代表不同的列

Pandas怎样实现groupby分组统计
g.get_group(('foo', 'one'))

Pandas怎样实现groupby分组统计

四、实例分组探索天气数据

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()

Pandas怎样实现groupby分组统计
新增一列为月份
df['month'] = df['ymd'].str[:7]
df.head()

Pandas怎样实现groupby分组统计
1、查看每个月的最高温度
data = df.groupby('month')['bWendu'].max()
data

Pandas怎样实现groupby分组统计
type(data)
pandas.core.series.Series

2、查看每个月的最高温度、最低温度、平均空气质量指数
df.head()

Pandas怎样实现groupby分组统计
group_data = df.groupby('month').agg({"bWendu":np.max, "yWendu":np.min, "aqi":np.mean})
group_data

Pandas怎样实现groupby分组统计

Original: https://blog.csdn.net/weixin_47661174/article/details/124699224
Author: 笑 瘾
Title: Pandas怎样实现groupby分组统计

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/675507/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球