2013-11-27 10 views
6

C'è un modo per personalizzare la finestra della funzione rolling_mean?Media di rotazione con finestra personalizzata con Pandas

data 
1 
2 
3 
4 
5 
6 
7 
8 

Diciamo che la finestra è impostato su 2, che è quello di calcolare la media di 2 datapoints prima e dopo l'obervation tra cui l'osservazione. Dì la terza osservazione. In questo caso, avremo (1+2+3+4+5)/5 = 3. Così via.

risposta

17

Calcolare la media corrente con una finestra in avanti (o indietro) e quindi utilizzare il metodo shift per ricentrarlo come si desidera.

data_mean = pd.rolling_mean(data, window=5).shift(-2) 

Se si vuole fare la media oltre 2 datapoints prima e dopo l'osservazione (per un totale di 5 datapoints) quindi effettuare la window=5.

Per esempio,

import pandas as pd 

data = pd.Series(range(1, 9)) 

data_mean = pd.rolling_mean(data, window=5).shift(-2) 
print(data_mean) 

cede

0 NaN 
1 NaN 
2  3 
3  4 
4  5 
5  6 
6 NaN 
7 NaN 
dtype: float64 

Come kadee points out, se si vuole centrare il rotolamento dire, quindi utilizzare

pd.rolling_mean(data, window=5, center=True) 
+0

Grazie per la risposta. Potrei non illustrare bene il mio esempio. Permettetemi di aggiornare il mio esempio. – zsljulius

+2

Per ricentrare, si può anche fare: data_mean = pd.rolling_mean (data, window = 5, center = True) – kadee

+0

@kadee: Grazie per il miglioramento. – unutbu

Problemi correlati