2013-11-27 7 views
6

Gibt es eine Möglichkeit, das Fenster der Funktion rolling_mean anzupassen?Rolling Mean mit angepasstem Fenster mit Pandas

data 
1 
2 
3 
4 
5 
6 
7 
8 

Sagen wir mal das Fenster auf 2 gesetzt ist, das heißt, die durchschnittlich 2 Datenpunkte vor und nach dem obervation einschließlich der Beobachtung zu berechnen. Sag die dritte Beobachtung. In diesem Fall haben wir (1+2+3+4+5)/5 = 3. Und so weiter und so fort.

Antwort

17

Berechnen Sie den üblichen Rolling Mean mit einem Vorwärts- (oder Rückwärts-) Fenster und verwenden Sie dann die shift-Methode, um es nach Wunsch neu zu zentrieren.

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

Wenn Sie mehr als 2 Datenpunkte gemittelt wollen vor und nach der Beobachtung (für insgesamt 5 Datenpunkte), dann die window=5 machen.

Zum Beispiel

import pandas as pd 

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

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

ergibt

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

Als kadee points out, wenn Sie die Roll bedeuten zum Zentrum wollen, dann

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

Danke für die Antwort verwenden. Ich kann mein Beispiel nicht gut illustrieren. Lassen Sie mich mein Beispiel aktualisieren. – zsljulius

+2

Um neu zu zentrieren, kann man auch tun: data_mean = pd.rolling_mean (Daten, window = 5, center = True) – kadee

+0

@kadee: Danke für die Verbesserung. – unutbu

Verwandte Themen