我使用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