为了账号安全,请及时绑定邮箱和手机立即绑定

使用Pandas .groupby时,为什么要使用.agg而不是直接使用.sum()函数

使用Pandas .groupby时,为什么要使用.agg而不是直接使用.sum()函数

慕盖茨4494581 2021-05-13 18:23:36
在Python中,要按组获取摘要,请使用groupby().agg(fx()); 例如groupby('variable').agg('sum')。那和直接使用功能有什么区别,例如;groupby('variable').sum()?
查看完整描述

2 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

设置


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

使用文档的主要好处agg在docs中进行了说明:


使用指定轴上的一项或多项操作进行汇总。


如果需要将单独的操作应用于每个单独的列,请agg使用字典(或函数,字符串或字符串/函数列表),该字典允许您在单个语句中创建该映射。因此,如果您想要sumof的列a,以及themean的列b:


df.agg({'a': 'sum', 'b': 'mean'})


a    6.0

b    5.0

dtype: float64

它还允许您在单个语句中将多个操作应用于单个列。例如,要查找sum,mean和std列a:


df.agg({'a': ['sum', 'mean', 'std']})


        a

sum   6.0

mean  2.0

std   1.0

agg与单个操作一起使用时,结果没有差异。我认为这df.agg('sum')还不如df.sum(),但结果将是相同的:


df.agg('sum')


a     6

b    15

dtype: int64


df.sum()


a     6

b    15

dtype: int64

agg提供的主要好处是应用多个操作的便利。


查看完整回答
反对 回复 2021-05-25
?
智慧大石

TA贡献1946条经验 获得超3个赞

groupby('variable').agg('sum')如果只传递一个函数,使用可能会过大。通常用于汇总多个功能,例如.agg(['sum', 'mean'])。


当仅传递一个函数时,结果应该是相同的,尽管在.agg()解析参数时会产生更多的开销。


>>> from pandas.util import testing as tm

>>> import numpy as np

>>> np.random.seed(444)


>>> df = tm.makeDataFrame()

>>> grp = df.groupby(df['A'] > 0)

>>> a = grp.agg('sum')

>>> b = grp.sum()

>>> tm.assert_frame_equal(a, b)

.agg()具有多种功能的典型用法如下:


>>> grp[['A', 'C']].agg(('sum', 'mean'))

               A                   C          

             sum      mean       sum      mean

A                                             

False -16.111352 -0.805568  0.423394  0.021170

True    9.435939  0.943594  4.788035  0.478803


查看完整回答
反对 回复 2021-05-25
  • 2 回答
  • 0 关注
  • 429 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号