数据聚合与分组运算

旧时模样 提交于 2021-02-11 13:36:00

一、GroupBy技术

 

分组运算的过程可以由拆分-应用-合并描述。

利用df.groupby()进行分组操作

1、对分组进行迭代

GroupBy对象支持迭代,可以产生一组二元元组(由分组名(可能为组合)和数据块组成)。对分出的数据片段可以做任何操作,例如将其做成一个字典。groupby默认是在axis=0上进行分组的,通过设置可以在任何其他轴上进行分组,例如还可以根据dtypes对列进行分组。

2、选取一个或一组列

对于由DataFrame产生的GroupBy对象,如果用一个或一组列名对其进行索引,就能实现选取部分列进行聚合的目的。这种索引操作所返回的对象是一个已分组的DataFrame(如果传入的是列表或数组,如df.groupby('key')[['data']])或已分组的Series(如果传入的是标量形式的单个列名,如df.groupby('key')['data'])。

3、通过字典或Series进行分组

4、通过函数进行分组

可以将函数跟数组、列表、字典、Series混合使用。

5、根据索引级别分组

层次化索引数据集能够根据索引级别进行聚合,通过level关键字传入级别编号或名称即可。

二、数据聚合

聚合是指任何能够从数组产生标量值的数据转换过程。可以使用已有的聚合函数,如mean/count/min/sum等;也可以自己定义聚合函数,只需将其传入aggregate或agg方法。

1、面向列的多函数应用

对于不同的列可以使用不同的聚合函数,也可以一次应用多个函数。

如果传入一组函数或函数名,得到的DataFrame的列就会以相应的函数命名。

如果传入的是(name,function)元组组成的列表,则各元组第一个元素为列名。

对不同的列应用不同的函数,是向agg传入一个从列名映射到函数的字典。

2、以“无索引”的形式返回聚合数据

三、分组级运算和转换

本节介绍transform和apply方法。

1、apply:一般性的“拆分-应用-合并”

2、分位数和桶分析

四、透视表和交叉表

交叉表是一种用于计算分组频率的特殊透视表。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!