我有一个格式的数据框
value 2000-01-01 1 2000-03-01 2 2000-06-01 15 2000-09-01 3 2000-12-01 7 2001-01-01 1 2001-03-01 3 2001-06-01 8 2001-09-01 5 2001-12-01 3 2002-01-01 1 2002-03-01 1 2002-06-01 8 2002-09-01 5 2002-12-01 19
(索引是日期时间),我需要逐年绘制所有结果以比较每3个月的结果(数据也可以是每月),再加上所有年份的平均值。
我可以轻松地分别绘制它们,但是由于有索引,它会根据索引移动图:
fig, axes = plt.subplots() df['2000'].plot(ax=axes, label='2000') df['2001'].plot(ax=axes, label='2001') df['2002'].plot(ax=axes, label='2002') axes.plot(df["2000":'2002'].groupby(df["2000":'2002'].index.month).mean())
因此,这不是理想的结果。我似乎在这里有一些答案,但是您必须合并,创建多索引并进行绘图。如果其中一个数据帧具有NaN或缺少值,则可能非常麻烦。有熊猫可以做到吗?
这是你想要的吗?您可以在转换后添加均值。
df = pd.DataFrame({'value': [1, 2, 15, 3, 7, 1, 3, 8, 5, 3, 1, 1, 8, 5, 19]}, index=pd.DatetimeIndex(['2000-01-01', '2000-03-01', '2000-06-01', '2000-09-01', '2000-12-01', '2001-01-01', '2001-03-01', '2001-06-01', '2001-09-01', '2001-12-01', '2002-01-01', '2002-03-01', '2002-06-01', '2002-09-01', '2002-12-01'])) pv = pd.pivot_table(df, index=df.index.month, columns=df.index.year, values='value', aggfunc='sum') pv # 2000 2001 2002 # 1 1 1 1 # 3 2 3 1 # 6 15 8 8 # 9 3 5 5 # 12 7 3 19 pv.plot()