如何绘制Pandas DataFrame中指定行的A列月度变化折线图
问题描述
现有如下结构的Pandas DataFrame:
A_month1 A_month2 B_month1 B_month2 Train1 1 9 6 3 Train2 7 0 3 9 Train3 4 2 0 2
需要绘制折线图,展示每个Train对应的A指标从month1到month2的变化:
- 包含Train1、Train2、Train3三条折线
- X轴为
month1、month2 - Y轴范围固定为0到10
解决方案
核心是调整数据结构,让月份作为X轴维度,每个Train对应独立折线系列,具体实现步骤如下:
- 提取A相关列:筛选出
A_month1和A_month2列,忽略B类数据 - 简化列名:将列名重命名为
month1和month2,方便X轴显示 - 转置数据:互换行与列,让月份成为索引(对应X轴),Train名称成为列(对应每条折线)
- 绘制折线图:利用Pandas的
plot方法直接绘图,同时设置Y轴范围、标题等参数
完整代码示例:
import pandas as pd import matplotlib.pyplot as plt # 构造示例DataFrame data = { "A_month1": [1, 7, 4], "A_month2": [9, 0, 2], "B_month1": [6, 3, 0], "B_month2": [3, 9, 2] } df = pd.DataFrame(data, index=["Train1", "Train2", "Train3"]) # 提取A相关列并简化列名 a_df = df[["A_month1", "A_month2"]].rename(columns={"A_month1": "month1", "A_month2": "month2"}) # 转置数据,让月份作为X轴 a_df_transposed = a_df.T # 绘制折线图 a_df_transposed.plot(kind="line", ylim=(0, 10), figsize=(8, 5)) plt.title("A指标从month1到month2的变化") plt.xlabel("月份") plt.ylabel("数值") plt.legend(title="Train") plt.show()
代码说明:
- 转置后的数据结构中,每一列对应一个Train的数值序列,Pandas会自动为每一列生成一条折线
ylim=(0,10)参数直接固定Y轴范围- 通过
legend和title可优化图表可读性
内容的提问来源于stack exchange,提问作者Tronald Dump
相关产品推荐
相关产品推荐

