dask.dataframe.groupby.Aggregation
dask.dataframe.groupby.Aggregation¶
- class dask.dataframe.groupby.Aggregation(name, chunk, agg, finalize=None)[源代码]¶
用户定义的分组聚合。
此类允许用户以 map-reduce 风格定义自己的自定义聚合操作,这些操作基于对 Pandas 数据帧的操作。您需要指定对每个数据块执行的操作、如何将这些数据块组合在一起,以及如何最终确定结果。
更多信息请参见 聚合。
- 参数
- 名称str
聚合的名称。它应该是唯一的,因为中间结果将通过此名称进行标识。
- 块可调用
一个函数,它将使用每个分区的分组列进行调用。它可以返回一个单一的序列或一个序列的元组。索引必须等于组。
- agg可调用
一个将被调用来聚合每个块结果的函数。同样,参数将是分组后的序列。如果
chunk
返回一个元组,agg
将以所有元组元素作为单独的位置参数被调用。- 最终确定可调用
一个可选的终结器,将在聚合结果上调用。
示例
我们可以如下实现
sum
:>>> custom_sum = dd.Aggregation( ... name='custom_sum', ... chunk=lambda s: s.sum(), ... agg=lambda s0: s0.sum() ... ) >>> df.groupby('g').agg(custom_sum)
我们可以如下实现
mean
:>>> custom_mean = dd.Aggregation( ... name='custom_mean', ... chunk=lambda s: (s.count(), s.sum()), ... agg=lambda count, sum: (count.sum(), sum.sum()), ... finalize=lambda count, sum: sum / count, ... ) >>> df.groupby('g').agg(custom_mean)
虽然当然,这两者都是内置的,所以你不需要自己实现它们。
方法
__init__
(name, chunk, agg[, finalize])