Groupby:分割、应用和组合
下图清晰地描述了Groupby的过程。
分割步骤将DataFrame按照指定的键分割成若干组。
应用步骤对每个组应用函数,通常是累计、转换或过滤函数。
组合步骤将每一组的结果合并成一个输出数组。
下面我们以下面为例。
原始数据表是这样的。为了展示方便,删除了后面的数据,总共17条数据
我们先导入数据
我们可以用DataFrame的groupby()方法进行绝大多数常见的分割-应用-组合操作,将需要分组的列名传进去即可:
这里返回的值不是一个DataFrame对象,而是一个DataFrameGroupBy对象。这个对象的魔力在于,你可以将它看成一个特殊形式的DataFrame,里面隐藏着若干组数据,但是在没有应用累计函数之前不会计算。
可以遍历循环分组:
我们可以对DataFrameGroupBy对象应用累计函数,它会完成相应的应用/组合步骤并生成结果:
Pandas的累计方法
大家有兴趣的可以多运行试试
如果想多列分组的话,直接以逗号分隔
我们再介绍一下GroupBy对象的aggregate(),filter(),transform()和apply()方法。我们先构建一个DataFrame
1、累计
我们目前熟悉的groupby累计方法只有sum()和median()之类的简单函数,但是aggregate()其实可以支持更复杂的操作,比如字符串、函数、或者函数列表,并且能一次性计算所有累计值。
也可以通过Python字典指定不同列需要累计的函数:
2 过滤
过滤操作可以让你按照分组的属性丢弃若干数据。例如,A组“data2"列的标准差不大于4,所以被丢弃了。
3 转换
常见的例子就是将每一组的样本数据减去各组均值,实现标准化
4 应用
apply()方法让你可以在每个组上应用任意方法。