2012-11-28 13 views
12

私は3つの異なるGPS受信機からの氷速度のGPSデータを持っています。データは、ジュリアンデイ(2009年の初めから増分)のインデックスを持つパンダデータフレームにあります。NaNを含むプロットパンダデータフレーム

    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 

データフレームの形式があります:

これは、データのサブセットである(主データセットは3487235行...)とR7とは異なるレートでサンプリング

 
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したがって、R8は、その間隔で体系的に現れるNaNである。

df.plot()は、データフレーム全体(またはそのインデックスされた行の位置)をプロットすると、R7とR8をプロットする上で問題なく動作しますが、R2をプロットしません。同様に、df.R2.plot()を実行しても機能しません。 R2をプロットする唯一の方法はdf.R2.dropna().plot()ですが、データのない期間(他の受信者よりも粗いサンプリング周波数ではなく)を示すNaNも削除されます。

他に誰かがこれを見つけましたか?問題のアイデアは感謝して受け取ります:)

+0

あなたは 'DatetiemIndex'にし、リサンプルR2 – bmu

答えて

9

デフォルトのプロットスタイルは1行だけなので何も表示されない理由があります。しかし、このラインはNaNでインターラクションされるので、複数の連続する値だけがプロットされます。そして、後者はあなたのケースでは起こりません。あなたは、あなたが見たいものに依存するプロットのスタイルを変更する必要があります。

手始めに、追加してください:

.plot(marker='o') 

すべてのデータポイントは円として表示させる必要があること。それは簡単に混乱するので、マーカーの調整、エッジグリッドの調整などが便利です。イム完全に、パンダはので、私は頻繁にプロットが複雑になります場合は、自分自身をmatplotlibのに切り替えるmatplotlibのを使用しているどのように調整されていない例:

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

おかげルトガーよりも、自分の時間ステップを変換する必要があり、それはすぐに回避策になります。私のパンダを使用する大きな理由は、相互相関などの計算に先立ってすべてを同じサンプリング間隔に再インデックスすることなので、基本的なプロットにはスタンドアロンのmatplotlibを引き続き使用します。ありがとう。 – ajt

関連する問題