如何基于不同列筛选Top值?以游戏销量数据集按global_sales取Top10发行商为例
按Global_Sales求和制作Top10发行商饼图
原代码仅统计了发行商在数据集中的出现次数,而非按Global_Sales求和,需要修改代码实现按全球销量总和统计Top10发行商并绘制饼图。
原代码:
data['Publisher'].value_counts().head(10).plot.pie(autopct='%1.1f%%', startangle=90)
数据集示例:
Rank Name Platform ... JP_Sales Other_Sales Global_Sales 0 1 Wii Sports Wii ... 3.77 8.46 82.74 1 2 Super Mario Bros. NES ... 6.81 0.77 40.24 2 3 Mario Kart Wii Wii ... 3.79 3.31 35.82 3 4 Wii Sports Resort Wii ... 3.28 2.96 33.00 4 5 Pokemon Red/Pokemon Blue GB ... 10.22 1.00 31.37 [5 rows x 11 columns]
解决方案
使用groupby按发行商分组并对Global_Sales求和,排序后取Top10再绘制饼图,修改后的代码如下:
# 分组求和、排序取Top10 top10_publishers = data.groupby('Publisher')['Global_Sales'].sum().sort_values(ascending=False).head(10) # 绘制饼图 top10_publishers.plot.pie(autopct='%1.1f%%', startangle=90, title='Top 10 Publishers by Global Sales')
关键步骤说明:
groupby('Publisher')['Global_Sales'].sum():按发行商分组,计算每个发行商的全球总销量sort_values(ascending=False):按总销量降序排列,确保销量最高的发行商排在前面head(10):筛选出总销量Top10的发行商- 保留原饼图参数的同时添加标题,提升图表可读性
内容的提问来源于stack exchange,提问作者azzy
相关产品推荐
相关产品推荐

