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=None)[源代码]

方法

__init__(name, chunk, agg[, finalize])