所有Pandas的.agg函数是什么?

23

假设我有这样的一段代码:

meanData = all_data.groupby(['Id'])[features].agg('mean')

这个代码对数据按'Id'值进行分组,选择需要的features,并通过计算每一组的'mean'来汇总每一组。

根据文档,我知道.agg中的参数可以是一个字符串,用于指定聚合数据所使用的函数。

我还发现有效的字符串包括'mean''median''sum''max''min''std'(标准差)。

然而,我在文档中找不到完整的名称列表。除了上述内容外,还有哪些方法可以在.agg中使用呢?

3个回答

16
您可以在文档中的GroupBy§计算/描述性统计中找到完整列表。 当前列出的函数包括许多聚合函数: all、any、bfill、backfill、count、cumcount、cummax、cummin、cumprod、cumsum、ffill、first、head、last、max、mean、median、min、ngroup、nth、ohlc、pad、prod、rank、pct_change、size、sem、std、sum、var、tail。 以下方法可用于SeriesGroupBy和DataFrameGroupBy对象,但可能略有不同,通常是DataFrameGroupBy版本允许指定轴参数,并且经常有一个参数指示是否将应用限制为特定数据类型的列。 all、any、backfill、bfill、corr、count、cov、cumcount、cummax、cummin、cumprod、cumsum、describe、diff、ffill、fillna、filter、hist、idxmax、idxmin、mad、nunique、pad、pct_change、plot、quantile、rank、resample、sample、shift、size、skew、take、tshift、value_counts。 以下方法仅适用于SeriesGroupBy对象。 hist、nlargest、nsmallest、unique、is_monotonic_increasing、is_monotonic_decreasing。 以下方法仅适用于DataFrameGroupBy对象。

corrwith,boxplot

corrwith是Pandas库中的一个函数,用于计算DataFrame对象中两个序列之间的相关性。boxplot是一种可视化工具,用于显示数据的分布情况和异常值。

1
@wjandrea 你可以添加这些吗? - Danny Varod
我做得更好,找到了一个带有解释的列表在文档中!并将信息添加在这里 :) - wjandrea

5

.agg() 一起使用的聚合函数包括:

平均值 - df.agg('mean')

中位数 - df.agg('median')

众数 - df.agg('mode')

求和 - df.agg('sum')

计数 - df.agg('count')

最大值 - df.agg('max')

最小值 - df.agg('min')

标准差 - df.agg('std')

方差 - df.agg('var')

偏度 - df.agg('skew')

峰度 - df.agg('kurt')


3

pandas/core/base.py 的相关部分(这里,第298行):

def _try_aggregate_string_function(self, arg, *args, **kwargs):
    """
    if arg is a string, then try to operate on it:
    - try to find a function (or attribute) on ourselves
    - try to find a numpy function
    - raise

    """
    f = getattr(self, arg, None)
    if f is not None:
        if callable(f):
            return f(*args, **kwargs)
    f = getattr(np, arg, None)
    if f is not None:
        return f(self, *args, **kwargs)

    raise ValueError("{arg} is an unknown string function".format(arg=arg))

本质上,它尝试使用字符串作为函数进行内省,然后在numpy中尝试相同的操作(如果是内置函数)。如果不是,则返回 ValueError

如果有人比我更了解,请帮忙澄清一下,否则希望这可以帮助到您。


1
这已经移动到apply.py,当前在第526行。他们还更改了NumPy检查,现在排除了GroupBy对象。 - wjandrea
2
在查找GroupBy对象的属性时,一个小技巧是你甚至可以调用类似于__iter__这样的非聚合器,或者做一些愚蠢的事情,比如.agg('agg','mean') - wjandrea

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接