如何不绘制错过的时期

时间:2017-01-27 09:35:03

标签: python pandas plot time-series nan

我正在尝试绘制时间序列数据,其中某些时段没有数据。数据被加载到数据框中,我正在使用df.plot()绘制它。问题是缺失的时期在绘图时会相互关联,给人的印象是在那段时间内存在价值,而事实并非如此。

以下是问题的一个示例

problem

9月1日至9月8日期间以及9月9日至9月25日之间没有数据,但数据的绘制方式似乎是该期间的值。

我希望在该时间段内显示零值,或者根本没有值。怎么做?

为了清楚起见,我没有期间[Sep 01,Sep 08],[Sep 09,Sep 29]的NaN值,但根本没有数据(甚至没有时间索引)。

2 个答案:

答案 0 :(得分:3)

您应该使用NaN值将缺少的日期添加到数据框中。然后,当绘制时,那些NaN会破坏这条线 - 你会得到几个线段,它们之间是空的。

This answer解释了如何将缺少的日期添加到数据框中。总结一下,这应该可以解决问题:

df = df.reindex(pd.DatetimeIndex(df.index), fill_value=NaN)

答案 1 :(得分:3)

考虑pd.Series s

s = pd.Series(
    np.arange(10), pd.date_range('2016-03-31', periods=10)
).replace({3: np.nan, 6: np.nan})

s.plot()

enter image description here

您可以看到np.nan已被跳过 但是:

s.fillna(0).plot()

enter image description here

0 s不会被跳过。

我建议s.replace(0, np.nan).plot()