我使用Matplotlib绘制时间序列数据,并且序列中缺少一些数据。 Matplotlib含蓄加入最后一个连续的数据点指向下一个。但是如果数据丢失,情节看起来很难看。以下是获得的情节。 Matplotlib删除缺失数据的插值
可以看出,在4月30日附近,数据丢失,Matplotlib加入了点。 另外下面的图片是数据的散点图。散点图覆盖了这个错误,但是在这种情况下连续的数据点将不会是联合的。而且,考虑到所涉及的大量数据点,散点图非常缓慢。
这种问题的建议解决方案是什么。
我使用Matplotlib绘制时间序列数据,并且序列中缺少一些数据。 Matplotlib含蓄加入最后一个连续的数据点指向下一个。但是如果数据丢失,情节看起来很难看。以下是获得的情节。 Matplotlib删除缺失数据的插值
可以看出,在4月30日附近,数据丢失,Matplotlib加入了点。 另外下面的图片是数据的散点图。散点图覆盖了这个错误,但是在这种情况下连续的数据点将不会是联合的。而且,考虑到所涉及的大量数据点,散点图非常缓慢。
这种问题的建议解决方案是什么。
如果你能辨认出破发点应该是你可以:
np.nan
的空白参见例如Plot periodic trajectories。
你可以得到的scatter
同样的效果(如果你不想扩大规模或独立的每个点的颜色)与
ax.plot(x, y, linestyle='none', marker='o')
正如前面回答说,你应该将NaN插入那里没有数据。 这个答案是特定于熊猫,并解释了如何轻松实现。或者:
Series.resample()
或Series.reindex()
最简单的方法使用是resample()
。这是定期分隔数据的最简洁方式。所以在上面的例子中,如果你有例如5分钟的数据,只是做data.resample("5 min")
。这会在缺失值中用'NaT'(相当于NaN的时间)返回你的数据集。
唯一不适用的情况是当你的样品没有规律间隔。
替代方案是reindex()
,它也适用于有序(但非时间序列)数据。因此,例如,如果您的数据集的索引编号为0 .. 100,但缺少一些样本,则可以执行data.reindex([0:100])
。您还可以通过传递pandas.date_range()
函数作为参数来复制resample
与reindex
的行为。
结束使用熊猫将插入NaN – 2013-05-09 13:31:07
@NipunBatra如果你做了不同的事情,你应该把它写成答案并接受你自己的答案。 – tacaswell 2013-05-09 14:26:41