pandas agg函数使用方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pandas agg函数使用方法相关的知识,希望对你有一定的参考价值。
参考技术A DataFrame.agg( func , axis = 0 , * args , ** kwargs )func : 函数,函数名称,函数列表,字典‘行名/列名’,‘函数名’
使用指定轴上的一个或多个操作进行聚合。
agg是一个聚合函数,聚合函数操作始终是在轴(默认是列轴,也可设置行轴)上执行,不同于 numpy聚合函数 (np.sum() //求和;np.prod() //所有元素相乘;np.mean() //平均值;np.std() //标准差;np.var() //方差;np.median() //中数;np.power() //幂运算;np.sqrt() //开方;np.min() //最小值;np.max() //最大值;np.argmin() //最小值的下标;np.argmax() //最大值的下标;np.inf //无穷大;np.exp(10) //以e为底的指数;np.log(10) //对数)
下面示例展示agg具体用法:
定义一个列表值:
在行上聚合这些函数
col1 col2 col3 col4
max 1111.0 2222.0 3333.0 4444.0
min 1.0 2.0 3.0 4.0
mean 308.5 617.0 925.5 1234.0
每列不同的聚合
col1 col2 col3
max NaN 2222.0 NaN
min 1.0 2.0 3 .0
sum 1234.0 NaN 3702.0
注:当某列没有其他聚合函数时,则用NaN填充。
好啦,就到这里了,谢谢
无法在 pandas 中使用 .agg 方法调用函数?
【中文标题】无法在 pandas 中使用 .agg 方法调用函数?【英文标题】:Cannot called a function using .agg method in pandas? 【发布时间】:2021-07-14 00:22:42 【问题描述】:我正在尝试在 DataCamp 上使用 Python 完成 Pandas 课程,但遇到了问题。我得到了解决方案,但我只想问。测验很简单:对一组数据使用 numpy 函数
这是他们完成这个小测验的建议提示:
.agg() can take in a list of functions. The functions shouldn't be called, so don't use parentheses with them.
这是我查找每个商店type
weekly_sales
的最小值、最大值和中位数的代码type
sales_stats = sales.groupby("type")["weekly_sales"].agg([np.min(), np.max(), np.mean(), np.median()])
这是错误:
File "<stdin>", line 4, in mean
TypeError: _mean_dispatcher() missing 1 required positional argument: 'a'
所以我把它改成:
sales_stats = sales.groupby("type")["weekly_sales"].agg([np.mean(sales["weekly_sales"]),np.median,np.min,np.max])
但是又出现了一个错误,所以我看看解决办法:
sales_stats = sales.groupby("type")["weekly_sales"].agg([np.min, np.max, np.mean, np.median])
这是否意味着我们不必向这些 numpy 方法传递任何参数?并且 .agg 函数会将“weekly_sales”作为参数传递给他们每个人?如果是这样,如果我想将两个参数传递给这些方法,例如monthly_sales
这是正确的方法吗?
sales_stats = sales.groupby("type")["weekly_sales","monthly_sales"].agg([np.min, np.max, np.mean, np.median])
【问题讨论】:
【参考方案1】:您非常接近,但正确的语法是:
sales_stats = (
sales.groupby("type")[["weekly_sales","monthly_sales"]]
.agg([np.min, np.max, np.mean, np.median])
)
这是因为,从 DataFrame
或在本例中为 Groupby
对象选择多个列需要列名列表。这个 sn-p 将返回 "weekly_sales" 和 "monthly_sales" 列的最小值、最大值、平均值和中位数 - 按 "type" 分组。
这是否意味着我们不必向这些 numpy 方法传递任何参数?并且 .agg 函数会将“weekly_sales”作为参数传递给他们每个人?如果是这样,如果我想将两个参数传递给这些方法,例如monthly_sales,这是正确的方法吗?
参数(在本例中为每个子数组)由 pandas 在后台传递给聚合函数。
如果你想要一些更细粒度的控制,你可以像这样传递一个字典:
sales_stats = (
sales.groupby("type")
.agg(
"weekly_sales": np.mean,
"monthly_sales": [np.min, np.max]
)
)
这将返回“weekly_sales”的平均值以及“monthly_sales”的最小值和最大值。查看 [
中的一些示例【讨论】:
以上是关于pandas agg函数使用方法的主要内容,如果未能解决你的问题,请参考以下文章
Python pandas.DataFrame.agg函数方法的使用
pandas使用groupby函数基于指定分组变量对dataframe数据进行分组使用agg函数计算每个分组不同数值变量的聚合统计值agg参数为字典指定不同变量的聚合计算统计量的形式