一、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、分位数和桶分析
四、透视表和交叉表
交叉表是一种用于计算分组频率的特殊透视表。
来源:oschina
链接:https://my.oschina.net/u/4386787/blog/3557868