dataframe.groupby().agg():分组聚合函数(第一个括号分组,第二个括号聚合)

df.groupby(by=[x1,x2...])[Y].agg({dict}):表示根据x1,x2...对Y分组,通过agg()进行聚合

其中,

① 不指定Y【不传[‘Y’]】

agg中的字典中的keys【键值】必须是dataframe中存在的列,否则报错

② 指定Y

指定对dataframe中的Y列进行聚合计算,字典中的键值可以是dataframe中不存在的列,执行后自动添加该列

接下来我将通过一个例子来展示一下上述内容

首先先给大家看一下本次举例用到的数据(成绩是数值型数据,故本次聚合计算的就是成绩这一列)

①不指定Y:

a.

#根据班级分组,计算各年级的平均分

#数据框中包含'成绩'这一列,所以可以不用传Y,np.xxx计算'成绩'

result = df.groupby(by=['班级']).agg(
    {'成绩':np.mean}
)

得到结果: 

 

b.若字典键值(keys)传入的字符不在数据框中,报错,因为np.xxx不知道要去计算谁

result = df.groupby(by=['班级']).agg(
    {'各年级平均分':np.mean}
)

②指定Y

result1 = df.groupby(by=['班级'])['成绩'].agg(
    {'各年级平均分':np.mean,
     '总人数':np.size,
     '总分':np.sum}
)

 得到结果:

此时你会发现,上面字典中定义的键值,不属于原数据框的列,但因为传入了Y(‘成绩’),此时的聚合函数np.xxx会去计算'成绩'这一列

 

【声明】1.数据框中的名字和成绩是乱写的

               2.分组聚合函数的形式是凭个人理解写的,可能不太正规,如果该贴有任何不专业的地方或者错误,请多多包涵,我也是初学者,只想做笔记的同时帮助帮助和我一样的初学者

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐