2015-10-27 16 views
6

Próbuję ponownie próbować Pandas TimeSeries. Gazy czasowe składają się z wartości binarnych (jest to zmienna kategorialna) bez brakujących wartości, ale po ponownym próbkowaniu pojawiają się NaN. Jak to jest możliwe?Pandas TimeSeries resample produkuje NaNs

nie mogę pisać jakieś przykładowe dane tutaj, ponieważ jest wrażliwy info, ale tworzę i resample serii następująco:

series = pd.Series(data, ts) 
series_rs = series.resample('60T', how='mean') 
+0

Jeśli próbkowania z podwyższoną częstotliwością następnie domyślny jest wprowadzenie 'wartości NaN' oprócz bez reprezentatywnej próbki kodu Trudno komentować dalszych – EdChum

Odpowiedz

6

upsampling przekształca się w regularnych odstępach czasu, więc jeśli nie ma żadnych próbek otrzymujesz NaN.

Możesz uzupełnić brakujące wartości do tyłu o fill_method='bfill' lub do przodu - fill_method='ffill' lub fill_method='pad'.

import pandas as pd 

ts = pd.date_range('1/1/2015', periods=10, freq='100T') 
data = range(10) 
series = pd.Series(data, ts) 
print series 
#2015-01-01 00:00:00 0 
#2015-01-01 01:40:00 1 
#2015-01-01 03:20:00 2 
#2015-01-01 05:00:00 3 
#2015-01-01 06:40:00 4 
#2015-01-01 08:20:00 5 
#2015-01-01 10:00:00 6 
#2015-01-01 11:40:00 7 
#2015-01-01 13:20:00 8 
#2015-01-01 15:00:00 9 
#Freq: 100T, dtype: int64 
series_rs = series.resample('60T', how='mean') 
print series_rs 
#2015-01-01 00:00:00  0 
#2015-01-01 01:00:00  1 
#2015-01-01 02:00:00 NaN 
#2015-01-01 03:00:00  2 
#2015-01-01 04:00:00 NaN 
#2015-01-01 05:00:00  3 
#2015-01-01 06:00:00  4 
#2015-01-01 07:00:00 NaN 
#2015-01-01 08:00:00  5 
#2015-01-01 09:00:00 NaN 
#2015-01-01 10:00:00  6 
#2015-01-01 11:00:00  7 
#2015-01-01 12:00:00 NaN 
#2015-01-01 13:00:00  8 
#2015-01-01 14:00:00 NaN 
#2015-01-01 15:00:00  9 
#Freq: 60T, dtype: float64 
series_rs = series.resample('60T', how='mean', fill_method='bfill') 
print series_rs 
#2015-01-01 00:00:00 0 
#2015-01-01 01:00:00 1 
#2015-01-01 02:00:00 2 
#2015-01-01 03:00:00 2 
#2015-01-01 04:00:00 3 
#2015-01-01 05:00:00 3 
#2015-01-01 06:00:00 4 
#2015-01-01 07:00:00 5 
#2015-01-01 08:00:00 5 
#2015-01-01 09:00:00 6 
#2015-01-01 10:00:00 6 
#2015-01-01 11:00:00 7 
#2015-01-01 12:00:00 8 
#2015-01-01 13:00:00 8 
#2015-01-01 14:00:00 9 
#2015-01-01 15:00:00 9 
#Freq: 60T, dtype: float64 
+0

Thx. To rozwiązało. –

+0

Super. Możesz go awansować lub zaakceptować - [info] (http://stackoverflow.com/tour) – jezrael

+0

A co robią różne metody wypełniania? Dokumentacja pand na nich jest raczej ograniczona. ffilll i bfill są oczywiste, ale co z pad? –

Powiązane problemy