当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python dask.dataframe.groupby.DataFrameGroupBy.aggregate用法及代码示例


用法:

DataFrameGroupBy.aggregate(arg, split_every=None, split_out=1)

在指定轴上使用一项或多项操作进行聚合。

此文档字符串是从 pandas.core.groupby.generic.DataFrameGroupBy.aggregate 复制而来的。

可能存在与 Dask 版本的一些不一致之处。

参数

funcfunction、str、list 或 dict(在 Dask 中不支持)

用于聚合数据的函数。如果是函数,则必须在传递 DataFrame 或传递给 DataFrame.apply 时工作。

接受的组合是:

  • function
  • 字符串函数名
  • 函数和/或函数名称列表,例如[np.sum, 'mean']
  • 轴标签的字典 -> 函数、函数名称或此类列表。

还可以接受指定了engine='numba' 的 Numba JIT 函数。此引擎仅支持传递单个函数。

如果选择'numba' 引擎,该函数必须是用户定义的函数,函数签名中的第一个和第二个参数分别是valuesindex。每个组的索引将传递给用户定义的函数,并且可以选择使用。

*args

要传递给 func 的位置参数。

enginestr,默认无(在 Dask 中不支持)
  • 'cython' :通过 cython 的 C-extensions 运行函数。
  • 'numba':通过来自 numba 的 JIT 编译代码运行函数。
  • None :默认为 'cython' 或全局设置 compute.use_numba
engine_kwargsdict,默认无(在 Dask 中不支持)
  • 对于'cython' 引擎,没有接受的engine_kwargs
  • 对于'numba' 引擎,引擎可以接受nopython , nogilparallel 字典键。这些值必须是 TrueFalse'numba' 引擎的默认 engine_kwargs{'nopython': True, 'nogil': False, 'parallel': False} 并将应用于函数
**kwargs

要传递给 func 的关键字参数。

返回

DataFrame

注意

使用 engine='numba' 时,内部不会有 “fall back” 行为。组数据和组索引将作为 numpy 数组传递给 JITed 用户定义函数,并且不会尝试替代执行尝试。

改变传递对象的函数可能会产生意外行为或错误,因此不受支持。有关更多详细信息,请参阅使用用户定义函数 (UDF) 方法进行变异。

例子

>>> df = pd.DataFrame(  
...     {
...         "A": [1, 1, 2, 2],
...         "B": [1, 2, 3, 4],
...         "C": [0.362838, 0.227877, 1.267767, -0.562860],
...     }
... )
>>> df  
   A  B         C
0  1  1  0.362838
1  1  2  0.227877
2  2  3  1.267767
3  2  4 -0.562860

聚合针对每一列。

>>> df.groupby('A').agg('min')  
   B         C
A
1  1  0.227877
2  3 -0.562860

多个聚合

>>> df.groupby('A').agg(['min', 'max'])  
    B             C
  min max       min       max
A
1   1   2  0.227877  0.362838
2   3   4 -0.562860  1.267767

选择要聚合的列

>>> df.groupby('A').B.agg(['min', 'max'])  
   min  max
A
1    1    2
2    3    4

每列不同的聚合

>>> df.groupby('A').agg({'B': ['min', 'max'], 'C': 'sum'})  
    B             C
  min max       sum
A
1   1   2  0.590715
2   3   4  0.704907

为了控制每列具有不同聚合的输出名称,pandas 支持“named aggregation”

>>> df.groupby("A").agg(  
...     b_min=pd.NamedAgg(column="B", aggfunc="min"),
...     c_sum=pd.NamedAgg(column="C", aggfunc="sum"))
   b_min     c_sum
A
1      1  0.590715
2      3  0.704907
  • 关键字是输出列名
  • 这些值是元组,其第一个元素是要选择的列,第二个元素是要应用于该列的聚合。 Pandas 提供带有字段['column', 'aggfunc']pandas.NamedAgg 命名元组,以便更清楚地了解参数是什么。像往常一样,聚合可以是可调用的或字符串别名。

有关更多信息,请参阅命名聚合。

>>> df.groupby("A")[["B"]].agg(lambda x: x.astype(float).min())  
      B
A
1   1.0
2   3.0

相关用法


注:本文由纯净天空筛选整理自dask.org大神的英文原创作品 dask.dataframe.groupby.DataFrameGroupBy.aggregate。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。