提问人:knightcool 提问时间:7/13/2020 更新时间:7/13/2020 访问量:444
Pandas agg() with mean(独立 vs 列表)
pandas agg() with mean(standalone vs list)
问:
我在使用葡萄酒评论数据集时正在深入研究 pandas 聚合器函数。为了汇总葡萄酒评论家给出的分数,我注意到,当我在 agg() 中使用 mean 作为独立函数时:
reviewer_mean_ratings = reviews.groupby('taster_name').points.agg('mean')
输出如下所示:
注意到输出有 2 列(至少在视觉上是这样的)。但
type(reviewer_mean_ratings) = pandas.core.series.Series
这只是名称和平均评级之间有空格的 1 列吗?我很困惑。
还注意到,我无法按平均评级降序对输出进行排序。相反,如果我在 agg() 中使用 mean 作为列表,那么降序稍后使用 sort_values() 方法起作用。
我的假设是,如果我想稍后访问平均评级列,唯一的方法是在原始查询中使用 agg(['mean']) 而不是 agg('mean')。我弄错了吗?
答:
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”子句。
评论