2014-10-07 3 views
6

Скажем, у меня есть кадр данных с несколькими временными метками и значениями. Я хотел бы измерить Δ values/Δt каждые 2.5 секунд. Предоставляет ли Панды какие-либо утилиты для временной дифференциации?Временная дифференциация в Pandas

       time_stamp values 
19492 2014-10-06 17:59:40.016000-04:00 1832128         
167106 2014-10-06 17:59:41.771000-04:00 2671048         
202511 2014-10-06 17:59:43.001000-04:00 2019434         
161457 2014-10-06 17:59:44.792000-04:00 1294051         
203944 2014-10-06 17:59:48.741000-04:00 867856 

ответ

6

Это, безусловно, делает. Во-первых, вам нужно будет преобразовать индексы в формат pandas date_range, а затем использовать пользовательские функции смещения, доступные для серий/данных, индексированных этим классом. Полезная документация here. Подробнее here о смещениях псевдонимов.

Этот код должен ресэмплировать ваши данные 2.5S интервалы

#df is your dataframe 
index = pd.date_range(df['time_stamp']) 
values = pd.Series(df.values, index=index) 

#Read above link about the different Offset Aliases, S=Seconds 
resampled_values = values.resample('2.5S') 

resampled_values.diff() #compute the difference between each point! 

Это должно сделать это.

+0

Спасибо @tyleha. Я надеюсь использовать это точное решение с приведенным выше фреймворком данных. Вот моя попытка: http://stackoverflow.com/questions/26247301/pandas-resampling-values-within-time-window-until-now Мне нужно, чтобы выборка была причинной, но это не так. –

+0

Является ли 'df.diff(). Diff()' эквивалентно поиску второй производной (приблизительно)? – LondonRob

+0

Конечно. Но вам лучше знать, что ваш Δt будет держать ваши единицы полезными. 2.5^2 s^2 будет ударом. – tyleha

Смежные вопросы