Pandas中如何实现groupby分组统计

Pandas中如何实现groupby分组统计,第1张

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/715037.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-25
下一篇 2022-04-25

发表评论

登录后才能评论

评论列表(0条)

保存