如何不绘制缺失的时期

How not to plot missing periods

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

这是问题的一个例子

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

我希望在那段时间可视化零值,或者根本没有值。怎么做?

需要说明的是,我没有 [9 月 1 日、9 月 8 日]、[9 月 9 日、9 月 29 日] 期间的 NaN 值,但根本没有数据(甚至在时间索引中也没有)。

您应该使用 NaN 值将缺失的日期添加到您的数据框中。然后,在绘制时,这些 NaN 会断开线条——您将得到几条线段,它们之间有空句点。

This answer 最好地解释了如何将缺失的日期添加到数据框中。总而言之,这应该可以解决问题:

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

考虑 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()

您可以看到 np.nan 被跳过了。
然而:

s.fillna(0).plot()

0没有跳过。

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