gpt4 book ai didi

python - 按两个元素分组的数据帧统计信息

转载 作者:行者123 更新时间:2023-11-28 20:38:33 24 4
gpt4 key购买 nike

确定一个pandas dataframe的统计信息组我找到了Chris Albon的解释我想应用于由两个元素(此 MWE 中的“a”和“b”)分组的数据框。

所以这是一个计算一些组统计信息的函数:

def get_group_stats(group):
return {'count': group.count().add_prefix('count_'),
'mean': group.mean().add_prefix('mean_'),
'sum': group.sum().add_prefix('sum_')}

数据帧df的定义:

df = pd.DataFrame( {'a':['A','A','B','B','B','C'],
'b':['A','A','B','A','B','A'],
'c':[ 1, 2, 5, 5, 4, 6 ]})

然后创建按“a”和“b”分组的统计表:

s1 = df.groupby(['a', 'b']).apply(get_group_stats)

但是提议的 unstack() 函数没有正确合并数据帧。我想要什么:

    a    |    b    | count_c | mean_c  | sum_c
-------------------------------------------------
A | A | 2 | 1.5 | 3.0
B | A | 1 | 5.0 | 5.0
B | B | 2 | 4.5 | 9.0
C | B | 1 | 6.0 | 6.0

最佳答案

您需要使用apply 返回Series:

def get_group_stats(group):
return pd.Series({'count': group.c.count(),
'mean': group.c.mean(),
'sum': group.c.sum()})


s1 = df.groupby(['a', 'b']).apply(get_group_stats).add_suffix('_c')
print (s1)
count_c mean_c sum_c
a b
A A 2.0 1.5 3.0
B A 1.0 5.0 5.0
B 2.0 4.5 9.0
C A 1.0 6.0 6.0

但更好的是使用 aggregate通过 list 函数:

s1 = df.groupby(['a', 'b'])['c'].agg(['count','mean','sum']).add_suffix('_c').reset_index()
print (s1)
a b count_c mean_c sum_c
0 A A 2 1.5 3
1 B A 1 5.0 5
2 B B 2 4.5 9
3 C A 1 6.0 6

关于python - 按两个元素分组的数据帧统计信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41013626/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com