无法在 pandas 中使用 .agg 方法调用函数?
Cannot called a function using .agg method in pandas?
我想在 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.
这是我的代码,用于查找每家商店 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])
你非常接近,但正确的语法是:
sales_stats = (
sales.groupby("type")[["weekly_sales","monthly_sales"]]
.agg([np.min, np.max, np.mean, np.median])
)
这是因为,从 DataFrame
或本例中的 Groupby
对象中选择多列需要列名列表。此代码段将 return“weekly_sales”和“monthly_sales”列的最小值、最大值、平均值和中值 - 按“类型”分组。
Does that mean that we don't have to pass any arguments to these numpy methods? and the .agg functions will pass the "weekly_sales" as an argument to every of them? If so, if I want to pass two arguments to these methods, for example monthly_sales Is this a right way?
参数(在本例中为每个子数组)由 pandas 在幕后传递给聚合函数。
如果你想要更细粒度的控制,你可以像这样传递一个字典:
sales_stats = (
sales.groupby("type")
.agg({
"weekly_sales": np.mean,
"monthly_sales": [np.min, np.max]
})
)
这将 return“weekly_sales”的平均值以及“monthly_sales”的最小值和最大值。查看 [[=15=] 中的一些示例
我想在 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.
这是我的代码,用于查找每家商店 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])
你非常接近,但正确的语法是:
sales_stats = (
sales.groupby("type")[["weekly_sales","monthly_sales"]]
.agg([np.min, np.max, np.mean, np.median])
)
这是因为,从 DataFrame
或本例中的 Groupby
对象中选择多列需要列名列表。此代码段将 return“weekly_sales”和“monthly_sales”列的最小值、最大值、平均值和中值 - 按“类型”分组。
Does that mean that we don't have to pass any arguments to these numpy methods? and the .agg functions will pass the "weekly_sales" as an argument to every of them? If so, if I want to pass two arguments to these methods, for example monthly_sales Is this a right way?
参数(在本例中为每个子数组)由 pandas 在幕后传递给聚合函数。
如果你想要更细粒度的控制,你可以像这样传递一个字典:
sales_stats = (
sales.groupby("type")
.agg({
"weekly_sales": np.mean,
"monthly_sales": [np.min, np.max]
})
)
这将 return“weekly_sales”的平均值以及“monthly_sales”的最小值和最大值。查看 [[=15=] 中的一些示例