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
相关产品推荐
相关产品推荐

