原理:
分组:使用特定的条件将原数据划分为多个组
聚合:对每个分组中的数据执行某些操作(如聚合、转换等),最后将计算的结果进行整合
分组和聚合的步骤分为三步:
拆分:将数据集按照一些标准拆分成若干个组,拆分操作是在指定轴上进行的,既可以对横轴方向上的数据进行分组,也可以对纵轴上的数据进行分组
应用:将某个函数或方法应用到每个分组
合并:将产生的新值整合到结果对象中
在Pandas中,可以通过groupby()方法将数据集按照某些标准划分成若干个组
【groupby(by=None, axis=0, level=None, as_index=True, sort=True,group_keys=True, squeeze=False, observed=False, **kwargs)】
by=None:用于确定分组的依据
axis:表示分组的轴的方向,可以为0或1,默认为0
level:如果某个轴是一个MultiIndex对象,则会按照特定级别或多个级别分组
as_index:表示聚合后的数据是否以组标签作为索引的DataFrame对象输出,接受布尔值,默认为True
sort:表示是否对分组标签进行排序,接受布尔值,默认为True
通过列名进行分组
在pandas对象中,如果他的某一列数据满足不同的划分标准,则可以将该列当作分组键来拆分数据集。
通过Series对象进行分组
当被拆分的对象没有相同列名时可以进行拆分可以创建一个series对象充当列名进行拆分
通过字典进行分组
字典中的键名为自定义分组的列名,值为自定义分组名
通过函数进行分组
函数返回的结果为自定义分组的组名,列索引为原数据的列索引
数据聚合
使用内置统计方法聚合数据
使用内置方法应用到每个分组中,并进算出平均数,最后将每个分组的计算结果合并到一起
面向列的聚合方法
当内置方法无法满足聚合要求时,这时可以自定义一个函数,将他传给agg()方法,实现对Series或DataFrame对象进行聚合运算。
对某列数据应用到不同的函数