绘制系列不同的频率

时间:2015-03-08 15:24:58

标签: python pandas

我有一些时间序列,我为此创建了季度和年度总和。我想把两者结合在一起,但情节只显示了更频繁的情节。 merged.plot()给出:

both frequencies

这是一些示例数据。

>>> merged.head()
           shopping_weightedQ             shopping_weightedA            
status                    emp       unemp                emp       unemp
date                                                                    
2003-01-01         653.964346  696.178441         695.374248  755.180039
2003-04-01         702.233863  647.461856                NaN         NaN
2003-07-01         665.619252  774.226719                NaN         NaN
2003-10-01         757.189689  932.586052                NaN         NaN
2004-01-01         670.114570  751.718014         703.479640  839.858502

1 个答案:

答案 0 :(得分:3)

你的问题是NaNs。 Pandas将数据传递给matplotlib进行绘图。当matplotlib看到NaN时,它会停止它正在生成的线,并且在它看到另一个可绘制值之前不会重新开始。由于您正在绘制线条,因此您无法查看年度数据的任何内容,因为从来没有两个值可以通过线条连接。例如,如果您使用merged.plot(style='o')绘制点数,则可以查看所有数据。

但你可能喜欢线条。我可以想到两种方法。

第一个落入matplotlib

import matplotlib.pylab as plt
plt.figure()
plt.plot( merged.shopping_weightedQ.index, merged.shopping_weightedQ )
plt.plot( merged.shopping_weightedA.dropna().index, merged.shopping_weightedA.dropna() )

第二个使用pandas绘图,共享matplotlib轴:

import matplotlib.pylab as plt
plt.figure()
ax = plt.gca()
merged.shopping_weightedA.dropna().plot(ax=ax)
merged.shopping_weightedQ.plot(ax=ax)

请注意,由于我目前还不完全了解的原因,可能与索引和x轴有关,如果两个绘图命令相反,并且你绘图,熊猫方法不起作用在Q之后,除非您还为每个绘图命令添加x_compat = True参数。

在每种情况下,您都可能不得不使用图例名称。