2012-11-28 13 views
12

Mam dane GPS prędkości lodu z trzech różnych odbiorników GPS. Dane znajdują się w ramce danych pandy z indeksem julian day (przyrost od początku 2009 r.).Arkusz danych pandy wydruku zawierający NaNs

Ten podzbiór danych (główny zbiór danych ma 3487235 rzędy ...):

    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 

dataframe ma postać:

 
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 próbki w różnym czasie i do R7 i R8 stąd NaN, które pojawiają się systematycznie w tym odstępie.

Próbowanie df.plot() w celu wykreślenia całej ramki danych (lub indeksowanych lokalizacji wierszy) działa dobrze pod względem wykreślania R7 i R8, ale nie wykreśla R2. Podobnie, po prostu wykonanie df.R2.plot() również nie działa. Jedynym sposobem na wydrukowanie R2 jest wykonanie df.R2.dropna().plot(), ale to również usuwa NaN, co oznacza okresy braku danych (a nie tylko grubszą częstotliwość próbkowania niż inne odbiorniki).

Czy ktoś inny się z tym spotkał? Wszelkie pomysły dotyczące problemu zostaną z wdzięcznością przyjęte :)

+0

trzeba konwertować swoje kroki czasowe do 'DatetiemIndex' niż resample i R2 – bmu

Odpowiedz

9

Powodem, dla którego nic nie widzisz, jest fakt, że domyślny styl wydruku to tylko linia. Ale linia zostaje interweniowana w NaN, więc zostanie narysowanych tylko wiele innych wartości. A to drugie nie zdarza się w twoim przypadku. Musisz zmienić styl kreślenia, który zależy od tego, co chcesz zobaczyć.

Na początek, warto dodać:

.plot(marker='o') 

To powinno uczynić punkty wszystkie dane wyświetlane jako okręgi. Łatwo się zagnieździć, więc dostosowanie markersize, edgecolor itp. Może być przydatne. Im nie w pełni dostosowane do jak Pandy jest za pomocą matplotlib więc często przełączać się do matplotlib jeśli Działki uzyskać bardziej skomplikowane, np:

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

Dzięki Rutger, to na razie dobra robota. Moim głównym powodem używania pand będzie ponowne indeksowanie wszystkiego do tego samego okresu próbkowania przed obliczeniami takimi, jak korelacja krzyżowa, więc prawdopodobnie będę nadal używać samodzielnego matplotlib do podstawowego kreślenia. Dzięki. – ajt

Powiązane problemy