API · Pandas
Pandas DataFrame.resample()-Funktion
Mit DataFrame.resample() werden zeitindizierte Beobachtungen für eine Aggregation in Intervalle gruppiert.
Auf dieser Seite
Die Python-Pandas-Methode DataFrame.resample() gruppiert zeitindizierte Beobachtungen nach Frequenz in Intervalle, sodass sie sich beispielsweise wochen- oder monatsweise summieren lassen.
Syntax von pandas.DataFrame.resample()
Die DataFrame-Methode tastet Zeilen anhand eines datetime-artigen Index erneut ab. Alternativ kann sie eine datetime-artige Spalte oder Indexebene verwenden, die mit on beziehungsweise level ausgewählt wird. Die genaue Signatur unterscheidet sich je nach pandas-Version. Der grundlegende Aufruf lautet df.resample(rule, ...), wobei rule die Zielfrequenz festlegt. Da hier keine pandas-Laufzeitversion angegeben ist, werden versionsabhängige Standardwerte und Parameter bewusst ausgelassen.
Parameter
| Parameter | Zweck |
|---|---|
rule |
Frequenzregel, die die Zielintervalle festlegt. |
closed |
Legt fest, welche Intervallgrenze eingeschlossen wird. |
label |
Legt fest, welche Intervallgrenze als Beschriftung des jeweiligen Ergebnisses dient. |
on |
Wählt statt des Indexes eine datetime-artige DataFrame-Spalte für die Gruppierung aus. |
level |
Wählt eine datetime-artige Ebene eines MultiIndex für die Gruppierung aus. |
origin und offset |
Verschieben den Beginn der Intervalle; zulässige Werte und Verhalten hängen von der pandas-Version ab. |
Rückgabewert
resample() gibt ein Resampler-Objekt zurück. Durch Verketten einer Aggregation wie .sum() entsteht ein Ergebnis für jedes Intervall. DataFrame.resample() arbeitet mit einem DataFrame; die folgenden Beispiele verwenden eine Series und rufen daher stattdessen Series.resample() auf. Die Beispiele wurden in diesem Paket nicht ausgeführt: Es enthält weder eine pandas-Laufzeitversion noch Ausführungsnachweise, daher wird kein beobachtetes Ergebnis behauptet.
Beispiel: wöchentliche Resampling-Aggregation einer Series
Diese Series enthält für jedes Datum vom 1. bis zum 30. Januar 2021 einen Wert. Die Wochenregel gruppiert die Tageswerte in Wochenintervalle, und .sum() addiert die Werte innerhalb jedes Intervalls. Bei der gezeigten Wochenregel mit Sonntagen als Wochenenden bezeichnen die Labels jeweils den Sonntag am Intervallende. Das erste und das letzte Intervall sind unvollständig, da die gelieferten Daten an einem Freitag beginnen und an einem Samstag enden.
import pandas as pd
dates = pd.date_range("2021-01-01", periods=30, freq="D")
daily = pd.Series(range(30), index=dates)
weekly_totals = daily.resample("W").sum()
print(weekly_totals)
Das Snippet ist kein Ausführungsnachweis. Es zeigt den Series-Aufruf und die erforderliche Eingabe, um die Aggregation anzupassen.
Beispiel: monatliche Resampling-Aggregation einer Series
Dieselbe tägliche Series lässt sich zu einem Kalender-Monatsintervall gruppieren und summieren. Der Code berechnet die Summe der gelieferten Beobachtungen vom 1. bis zum 30. Januar: Die Werte reichen von 0 bis 29 und ergeben zusammen 435. Das ist keine Aggregation eines vollständigen Monats, weil die Eingabe keinen Wert für den 31. Januar enthält. MonthEnd() drückt die Regel für das Monatsende aus, ohne sich auf einen Frequenzalias zu stützen, dessen Unterstützung je nach pandas-Version variieren kann.
import pandas as pd
dates = pd.date_range("2021-01-01", periods=30, freq="D")
daily = pd.Series(range(30), index=dates)
monthly_totals = daily.resample(pd.offsets.MonthEnd()).sum()
print(monthly_totals)
Dieses Snippet ist kein Ausführungsnachweis. Sein Ergebnis wird aus den gelieferten Werten hergeleitet; eine versionsabhängige pandas-Ausgabeformatierung wird nicht behauptet.