So berechnen sie gleitende durchschnitte in python
Ein gleitender Durchschnitt ist eine Technik, mit der Zeitreihendaten geglättet werden können, um „Rauschen“ in den Daten zu reduzieren und Muster und Trends leichter zu erkennen.
Die Idee hinter einem gleitenden Durchschnitt besteht darin, den Durchschnitt mehrerer vorheriger Perioden zu verwenden, um einen „gleitenden Durchschnitt“ für einen bestimmten Zeitraum zu ermitteln.
In diesem Tutorial wird erklärt, wie man gleitende Durchschnitte in Python berechnet.
Beispiel: Gleitende Durchschnitte in Python
Angenommen, wir haben die folgende Tabelle, die den Gesamtumsatz eines bestimmten Unternehmens über 10 Zeiträume zeigt:
x = [50, 55, 36, 49, 84, 75, 101, 86, 80, 104]
Methode 1: Verwenden Sie die Funktion cumsum().
Eine Möglichkeit, den gleitenden Durchschnitt zu berechnen, ist die Verwendung der Funktion cumsum():
import numpy as np #define moving average function def moving_avg(x, n): cumsum = np.cumsum(np.insert(x, 0, 0)) return (cumsum[n:] - cumsum[:-n]) / float(n) #calculate moving average using previous 3 time periods n = 3 moving_avg(x, n): array([47, 46.67, 56.33, 69.33, 86.67, 87.33, 89, 90])
So interpretieren Sie das Ergebnis:
- Der gleitende Durchschnitt der dritten Periode beträgt 47. Er wird als Durchschnitt der ersten drei Perioden berechnet: (50+55+36)/3 = 47 .
- Der gleitende Durchschnitt für die vierte Periode beträgt 46,67. Dies wird als Durchschnitt der drei vorherigen Perioden berechnet: (55+36+49)/3 = 46,67 .
Und so weiter.
Methode 2: Pandas verwenden.
Eine andere Möglichkeit, den gleitenden Durchschnitt zu berechnen, besteht darin, eine Pandas-basierte Funktion zu schreiben:
import pandas as pd #define array to use and number of previous periods to use in calculation x = [50, 55, 36, 49, 84, 75, 101, 86, 80, 104] n=3 #calculate moving average pd.Series(x).rolling(window=n).mean().iloc[n-1:].values array([47, 46.67, 56.33, 69.33, 86.67, 87.33, 89, 90])
Diese Methode liefert genau die gleichen Ergebnisse wie die vorherige Methode, läuft jedoch tendenziell schneller auf größeren Arrays.
Beachten Sie, dass Sie auch eine beliebige Anzahl früherer Perioden angeben können, die bei der Berechnung des gleitenden Durchschnitts verwendet werden sollen. Beispielsweise könnten Sie lieber n=5 verwenden:
#use 5 previous periods to calculate moving average n=5 #calculate moving average pd.Series(x).rolling(window=n).mean().iloc[n-1:].values array([54.8, 59.8, 69., 79., 85.2, 89.2])
Je mehr Perioden Sie zur Berechnung des gleitenden Durchschnitts verwenden, desto „geglätteter“ wird die Linie des gleitenden Durchschnitts.