HOWTO · Pandas
Berechnen Sie die rollierende Standardabweichung in Pandas
Dieses Tutorial beschreibt, wie man die rollierende Standardabweichung in Pandas berechnet.
Auf dieser Seite
Für eine Pandas-Series oder einen DataFrame legt rolling(window=...) das gleitende Fenster fest. Anschließend berechnet std() die Standardabweichung für jedes Fenster. Zum Beispiel liefert values.rolling(window=3).std() die rollierende Standardabweichung auf Grundlage von jeweils drei Beobachtungen. Ergebnisse gibt es erst, sobald ein vollständiges Fenster vorliegt.
Rollierende Standardabweichung mit rolling().std() berechnen
Bei einer rollierenden Berechnung wandert das Fenster der Reihe nach über die Werte. An jeder Position nimmt Pandas die Beobachtungen im ausgewählten Fenster und berechnet daraus die Standardabweichung. Das folgende Beispiel verwendet eine kurze Series, damit sich Eingabe und Berechnung leicht anpassen lassen. Es setzt ausdrücklich ddof=0: Für jedes vollständige Fenster wird daher die Populationsstandardabweichung berechnet und die Ausgabe auf zwei Dezimalstellen gerundet.
Führen Sie dieses Beispiel aus:
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
import pandas as pd
values = pd.Series([2, 4, 6, 8, 10])
rolling_std = values.rolling(window=3).std(ddof=0)
print(rolling_std.round(2).to_string())
0 NaN
1 NaN
2 1.63
3 1.63
4 1.63
Hier gibt das Argument window die Anzahl der Beobachtungen pro Fenster an. Pandas unterstützt auch zeitbasierte Fenster, wenn der Series oder dem DataFrame ein Datetime-Index zugewiesen ist. Solche Fenster werden mit einer Dauer wie "7D" angegeben; die Anzahl der Beobachtungen kann je nach Datum variieren. Die verfügbaren Fensterformen und Optionen finden Sie in der Pandas-Referenz zu rollierenden Berechnungen.
Fenster auswählen und das Ergebnis interpretieren
Wählen Sie ein Fenster, das zum Zeitraum passt, den Sie zusammenfassen möchten. Ein kurzes Fenster reagiert schnell auf lokale Änderungen, während ein längeres mehr davon glättet. Jeder Ausgabewert beschreibt die Streuung der Beobachtungen in seinem jeweiligen Fenster und kann so helfen, Veränderungen der Variabilität im Zeitverlauf zu vergleichen. Er sagt keine zukünftigen Werte voraus.
Standardmäßig muss ein Fenster alle vorgesehenen Beobachtungen enthalten, bevor Pandas einen Wert zurückgibt. Bei window=3 fehlen daher die Ergebnisse für die ersten beiden Positionen: Dort liegen noch keine drei Werte vor. Mit min_periods können Sie Ergebnisse auf Grundlage weniger Beobachtungen zulassen, sollten dabei aber berücksichtigen, dass diese frühen Werte eine kleinere Stichprobe zusammenfassen. Die Standardabweichung verwendet standardmäßig die Stichprobenkonvention (ddof=1). Übergeben Sie ddof=0, um die Populationskonvention zu verwenden, sofern sie zu Ihrer Analyse passt. Fehlende Werte in der Eingabe können ebenfalls beeinflussen, für welche Fenster Ergebnisse berechnet werden.
Älteren Code mit rolling_std() verstehen
In älterem Code kann rolling_std() vorkommen. Wenn Sie darauf stoßen, übertragen Sie die Berechnung auf die Schnittstelle für rollierende Fenster: Rufen Sie series.rolling(window=...) und anschließend .std() auf. Dadurch ist die Wahl des Fensters klar angegeben, und die Berechnung folgt demselben Muster wie andere rollierende Berechnungen. Um die Berechnung zu aktualisieren, müssen Sie nicht wissen, in welcher historischen Version eine bestimmte Methode eingeführt wurde. Prüfen Sie bei der Pflege älterer Umgebungen die Dokumentation der im Projekt verwendeten Pandas-Version.