2012-11-28 34 views
12

我有來自三個不同GPS接收器的冰速GPS數據。數據位於熊貓數據框中,索引爲朱連日(從2009年開始增量)。描繪包含NaN的熊貓數據幀

這是數據的子集(主數據集是3487235行...):

    R2   R7   R8 
1235.000000 116.321959 100.805197 96.519977 
1235.000116 NaN   100.771133 96.234957 
1235.000231 NaN   100.584559 97.249262 
1235.000347 118.823610 100.169055 96.777833 
1235.000463 NaN   99.753551 96.598350 
1235.000579 NaN   99.338048 95.283989 
1235.000694 113.995003 98.922544 95.154067 

的數據幀具有形式:

 
Index: 6071320 entries, 127.67291667 to 1338.51805556 
Data columns: 
R2 3487235 non-null values 
R7 3875864 non-null values 
R8 1092430 non-null values 
dtypes: float64(3) 

R2以不同的速率來採樣R7和R8因此NaNs系統地出現在那個間距。

嘗試df.plot()繪製整個數據幀(或其索引行位置)在繪製R7和R8方面工作良好,但未繪製R2。同樣,只是做df.R2.plot()也不起作用。繪製R2的唯一方法是做df.R2.dropna().plot(),但是這也會去除表示無數據週期的NaN(而不僅僅是比其他接收機更粗糙的採樣頻率)。

有沒有人遇到過這個?任何關於這個問題的想法都會得到感謝:)

+0

您應將時間步轉換爲'DatetiemIndex'比重採樣R2 – bmu

回答

9

你沒有看到任何東西的原因是因爲默認情節樣式只是一條線。但是這條線在NaN's處被中斷,因此只有多個連續的值將被繪製。而後者不會發生在你的情況。你需要改變繪圖的風格,這取決於你想看到什麼。

對於初學者來說,嘗試添加:

.plot(marker='o') 

這應該使所有的數據點顯示爲圓圈。它很容易混亂,因此調整標記大小,邊緣顏色等可能是有用的。我不是完全調整到大熊貓是如何使用matplotlib,所以我經常切換到matplotlib自己,如果情節變得更加複雜,如:

plt.plot(df.R2.index.to_pydatetime(), df.R2, 'o-') 
+1

感謝魯特格爾,目前這是一個很好的解決方法。使用熊貓的重要原因將是在事物計算(如互相關)之前將所有事物重新索引到相同的採樣間隔,所以我可能會繼續使用獨立的matplotlib進行基本繪圖。謝謝。 – ajt