Pandas agg() with mean(独立 vs 列表)

pandas agg() with mean(standalone vs list)

提问人:knightcool 提问时间:7/13/2020 更新时间:7/13/2020 访问量:444

问:

我在使用葡萄酒评论数据集时正在深入研究 pandas 聚合器函数。为了汇总葡萄酒评论家给出的分数,我注意到,当我在 agg() 中使用 mean 作为独立函数时:

reviewer_mean_ratings = reviews.groupby('taster_name').points.agg('mean')

输出如下所示:

reviewer-ratings-output

注意到输出有 2 列(至少在视觉上是这样的)。但

type(reviewer_mean_ratings) = pandas.core.series.Series

这只是名称和平均评级之间有空格的 1 列吗?我很困惑。

还注意到,我无法按平均评级降序对输出进行排序。相反,如果我在 agg() 中使用 mean 作为列表,那么降序稍后使用 sort_values() 方法起作用。

我的假设是,如果我想稍后访问平均评级列,唯一的方法是在原始查询中使用 agg(['mean']) 而不是 agg('mean')。我弄错了吗?

python-3.x pandas-groupby data-science

评论


答:

0赞 Sam 7/13/2020 #1

输出是一个 pandas Series,有点像一个带有索引的 1 列 Dataframe。要获取 Series 的实际值,只需添加 '.values':

reviewer_mean_ratings = reviews.groupby('taster_name').points.agg('mean').values

这会将值输出为 numpy 数组。

评论

0赞 knightcool 7/13/2020
谢谢!我发现,如果我只使用以下语句,我可以在不使用“平均值”作为列表的情况下获得评级的降序。下一个答案描述了解决方案。
0赞 knightcool 7/13/2020 #2

发现以下语句通过在 agg() 方法中使用“mean”作为独立函数来获取降序。

reviews.groupby('taster_name').points.agg('mean').sort_values(ascending=False)

即不要在 sort_values() 方法中使用“by”子句。