You need to enable JavaScript to run this app. 如何为Pandas多级索引DataFrame按每个游戏平台单独绘制销售趋势图
优惠活动
大模型
产品
解决方案
定价
更多

如何为Pandas多级索引DataFrame按每个游戏平台单独绘制销售趋势图

问题原因

你原有代码的循环逻辑存在错误:for platform in data_recent_decade: 实际是遍历DataFrame的列名,你当前的数据集只有total_sales_sum一列,因此只会执行1次循环,且绘制的是所有平台的汇总数据,自然不符合分平台绘图的要求。

正确实现方案

你需要先提取多级索引第一层级的所有唯一平台名称,循环时单独筛选每个平台对应的子数据再绘图即可,参考代码如下:

import pandas as pd
import matplotlib.pyplot as plt

# 原有数据预处理逻辑保留
data_recent_decade=data.query('year_of_release>=2006').pivot_table(index=['platform','year_of_release'],values=['total_sales'], aggfunc=['sum'])
data_recent_decade.columns=['total_sales_sum']

# 获取所有唯一平台名
platforms = data_recent_decade.index.get_level_values('platform').unique()

# 循环为每个平台绘图
for platform in platforms:
    # 筛选当前平台的所有数据,索引自动转为year_of_release,直接作为x轴
    platform_data = data_recent_decade.loc[platform]
    # 绘图
    platform_data.plot(y='total_sales_sum', marker='o', grid=True, figsize=(13,4))
    plt.title(f"{platform} 年度销售额走势")
    plt.xlabel("发布年份")
    plt.ylabel("总销售额")
    plt.show()

可选优化

如果x轴年份显示为浮点数(比如2011.0)影响美观,可以在筛选数据后补充一行代码转换年份格式:

platform_data.index = platform_data.index.astype(int)

内容的提问来源于stack exchange,提问作者Nikita Tsekhanovich

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 16:06:02