关于python:如何不绘制丢失的时期

How not to plot missing periods

我正在尝试绘制时间序列数据,在某些时期内没有数据。 数据已加载到数据框中,我正在使用df.plot()对其进行绘制。 问题在于,绘制时缺少的时间段会相互关联,给人的印象是该时间段中存在值,而实际上不存在。

这是问题的一个例子

problem

在9月01日至9月08日之间以及9月9日至9月25日之间没有数据,但是以一种似乎在该时间段内有值的方式绘制数据。

我希望在此期间显示零值,或者根本没有值。 怎么做?

请注意,我在[Sep 01,Sep 08],[Sep 09,Sep 29]期间没有NaN值,但是根本没有数据(甚至没有时间索引)。


考虑pd.Series s

1
2
3
4
5
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被跳过了。
然而:

1
s.fillna(0).plot()

enter image description here

0不被跳过。

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


您应该使用NaN值将缺少的日期添加到数据框中。 然后,当绘制这些NaN时,它们会折断线-您将获得几个线段,并且它们之间有空的句点。

该答案最好地说明了如何将缺失的日期添加到数据框中。 概括起来,这应该可以解决问题:

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