2014-10-07 11 views
6

Supponiamo di avere un dataframe con più timestamp e valori. Vorrei misurare Δ values/Δt ogni 2.5 secondi. Pandas fornisce qualche utilità per la differenziazione temporale?Differenziazione dell'ora in 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 

risposta

6

Lo fa sicuramente. Innanzitutto, è necessario convertire gli indici in formato panda date_range e quindi utilizzare le funzioni di offset personalizzate disponibili per serie/dataframes indicizzati con tale classe. Documentazione utile here. Ulteriori informazioni here sugli alias di offset.

Questo codice dovrebbe ricampionare i dati a intervalli 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! 

Che dovrebbe farlo.

+0

Grazie a @tyleha. Spero di utilizzare questa soluzione precisa con il dataframe di cui sopra. Ecco il mio tentativo: http://stackoverflow.com/questions/26247301/pandas-resampling-values-within-time-window-until-now Ho bisogno che il campionamento sia causale, ma non lo è. –

+0

'df.diff(). Diff()' equivale a trovare la seconda derivata (circa)? – LondonRob

+0

Sicuro. Ma è meglio che tu conosca il tuo Δt per mantenere le tue unità utili. 2.5^2 s^2 sarebbe whack. – tyleha