数据的聚合运算——基础篇

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Jakob_Hu/article/details/88818212

聚合函数

聚合就是在groupby方法对数据进行分组时,GroupBy对象高效的对数据进行切片,对每个切片使用指定的运算方法,并将结果组装成最终结果的过程。

下表列出的是最常使用的作用于GroupBy对象的聚合运算方法,
在这里插入图片描述

1)选取GroupBy对象的一列聚合运算

在这里插入图片描述

2)选取GroupBy对象的多列聚合运算

在这里插入图片描述
在这里插入图片描述

3)自定义聚合函数(aggregate和agg方法)

如果使用的是自己编写的聚合函数,需要使用aggregate或者agg方法传入GroupBy对象后才能被执行,
在这里插入图片描述

聚合高级应用

首先创建一个小费的DataFrame用于之后的演示,
在这里插入图片描述

面向列的多函数应用

之前使用 aggregate方法,或者直接使用pandas的聚合方法都是对一个或者多个列执行同一种方法,现在有需求是同时对不同列使用不同的聚合方法,继续使用上方的小费数据集,
在这里插入图片描述

1)agg方法对GroupBy对象的一列使用一个方法

在这里插入图片描述

2)agg方法对GroupBy对象的一列使用多个方法

在这里插入图片描述
agg方法对分组变量的tip_pct这列进行多种方法的操作后,可以指定列名,方式是传入(name,function)这样的元组构成的列表,
在这里插入图片描述

3)agg方法对多列使用多种相同的方法

在这里插入图片描述
得到的结果列名也是层次化的,
在这里插入图片描述

4)agg方法对分组变量的多列使用多种不同的方法

具体的做法是传入一个字典,key是要操作的列名,value是执行的不同的函数,
在这里插入图片描述

无索引形式返回聚合变量(groupby方法as_index=False)

之前的例子中,用于分组的列都最终变为分组变量和聚合变量的索引,如果设置groupby方法的as_index参数为False,则用于分组的列不会以索引形式出现在结果中,但是出现在最前面的列中,
在这里插入图片描述
官方文档中提示,as_index=False会在一定程度上使结果缺乏灵活性。

分组别运算和转换

1)transform方法

在这里插入图片描述
一般的,mean方法是对分组变量进行操作,最终得到的也是分组的结果,
在这里插入图片描述
在这里插入图片描述
先将np.mean方法作用到groupby产生的不同的GroupBy对象上,之后再将结果放置到适当地位置上,
在这里插入图片描述
在这里插入图片描述
transform所得结果的索引与源数据相同,此外,transform方法也支持传入自定义函数,
在这里插入图片描述

2)apply方法

在这里插入图片描述
该方法的演示使用之前的小费数据集,apply方法将数据分成小块,并对每一块使用传入的方法,最后再将各片段组合。首先选出tip_pct最高的几个记录,
在这里插入图片描述
在这里插入图片描述
上面是对整个dataframe使用top方法返回的结果,现在想获取到通过“smoker”这一列进行分组后,每组最高的前几名的方法如下,
在这里插入图片描述
如果是根据多列进行分组,再使用apply方法,
在这里插入图片描述
apply方法是对每个组执行传入的方法,分组变量最终形成groupby对象的索引,可以使用group_keys参数指定是否禁止分组键,
在这里插入图片描述
在这里插入图片描述

返回的对象不会把分组变量作为索引,与之前内容中as_index参数的区别是,group_keys为False时,分组列的位置不会变动

3)cut与qcut方法的分组运算

cut方法和qcut方法的使用参考笔记,首先回顾cut方法的使用,
在这里插入图片描述
cut方法返回的对象可以直接用于groupby方法,
在这里插入图片描述
qcut与cut方法的分组运算同理,
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Jakob_Hu/article/details/88818212