You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Pandas、Matplotlib:能否绘制多级索引DataFrame?

如何用Matplotlib绘制多级索引的Pandas DataFrame?

当然可以用Matplotlib绘制这个多级索引的DataFrame啦!我给你两种实用的实现方法,一步步来:

方法一:先处理索引,生成美观的日期标签

你的grouped_df是以Year和Month作为多级索引的DataFrame,首先我们可以把多级索引转换成普通列,再生成可读性更强的"YYYY-MM"格式标签,这样绘图时x轴会更清晰:

首先导入需要的库:

import matplotlib.pyplot as plt
import pandas as pd

接着处理你的多级索引DataFrame:

# 把多级索引转为普通列
grouped_df = grouped_df.reset_index()
# 生成"YYYY-MM"格式的日期标签,Month补零保证格式统一
grouped_df['Date_Label'] = grouped_df['Year'].astype(str) + '-' + grouped_df['Month'].astype(str).str.zfill(2)

然后绘制柱状图(也可以换成折线图):

# 设置图表大小
plt.figure(figsize=(10, 6))
# 绘制柱状图
plt.bar(grouped_df['Date_Label'], grouped_df['Message'])
# 添加标题和轴标签
plt.title('Jw的消息数量按年月统计')
plt.xlabel('年月')
plt.ylabel('消息数量')
# 旋转x轴标签,避免重叠
plt.xticks(rotation=45)
# 自动调整布局,防止标签被截断
plt.tight_layout()
# 显示图表
plt.show()

方法二:不重置索引,直接绘图

如果你不想修改索引结构,也可以直接调用DataFrame的plot方法,Matplotlib会自动识别多级索引:

plt.figure(figsize=(10, 6))
# 直接绘制柱状图,kind参数可换成'line'绘制折线图
grouped_df['Message'].plot(kind='bar')
plt.title('Jw的消息数量按年月统计')
plt.xlabel('年月')
plt.ylabel('消息数量')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

不过这种方式的x轴标签会显示成(2017, 7)这类格式,如果追求更直观的日期展示,还是推荐第一种方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:37:46