首页 > 解决方案 > 如何使用列名作为 x 值在 pandas 中绘制时间序列?

问题描述

如何绘制一个熊猫数据框,其中列是每个时间步的值,每一行对应不同的时间序列?

例如,我想在下面绘制数据框,其中x轴是列值(1,2,3),y轴是每一行的值,每一行是绘图的色调(按产品着色)。所有线图都在同一个图上

对于时间序列 1,它应该绘制 (1,2)、(2,2)、(3,0) 并且线图应该用时间序列 1 标记。

df = pd.DataFrame({'product': ['timeseries1', 'timeseries2', 'timeseries3', 'timeseries4', 'timeseries5'], 
          1: [2,21,2,14,15], 
          2:  [2,3,9,22,44], 
          3: [0, 32, 0, 11,2]})

可以使用循环来完成,但是有没有办法直接使用 pandas plot

标签: pythonpandasdataframetime-seriesdata-visualization

解决方案


通过数据的转置更容易:

ax = df.T.iloc[1:].plot()
_, labels = ax.get_legend_handles_labels()
ax.legend([f"timeseries{int(j)+1}" for j in labels])

iloc[1:]是为了避免product列和最后两行修改标签名称


推荐阅读