Pandas: wie man zeitreihen mit groupby() neu abtastet
Beim Resampling von Zeitreihendaten werden die Daten über einen neuen Zeitraum aggregiert.
Wenn Sie eine Zeitreihe in Pandas mithilfe des Groupby- Operators erneut abtasten möchten, können Sie die folgende grundlegende Syntax verwenden:
group = df. groupby ([pd. Group (freq=' W '), ' store ']) result = group[' sales ']. sum (). unstack (' store '). fillna (0)
In diesem speziellen Beispiel werden die Zeilen des DataFrame nach der Store- Spalte gruppiert, dann wird die Zeitreihe nach Woche erneut abgetastet ( freq=’W‘ ) und dann wird die Summe der Werte in der Verkaufsspalte berechnet.
Beachten Sie, dass wir Zeitreihendaten auf verschiedene Zeiträume übertragen können, darunter:
- S : Sekunden
- min : Minuten
- H : Stunden
- J : Tag
- W : Woche
- M : Monat
- F : Viertel
- A : Jahr
Das folgende Beispiel zeigt, wie Zeitreihendaten mit einer Groupby- Operation in der Praxis erneut abgetastet werden.
Beispiel: Erneutes Abtasten einer Zeitreihe mit Groupby in Pandas
Angenommen, wir haben den folgenden Pandas-DataFrame, der die täglichen Gesamtverkäufe in zwei verschiedenen Geschäften anzeigt:
import pandas as pd #createDataFrame df = pd. DataFrame ({' sales ': [13, 14, 17, 17, 16, 22, 28, 10, 17, 10, 11], ' store ': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B']} , index=pd. date_range ('2023-01-06', '2023-01-16', freq='d')) #view DataFrame print (df) sales store 2023-01-06 13 A 2023-01-07 14 A 2023-01-08 17 A 2023-01-09 17 A 2023-01-10 16A 2023-01-11 22 B 2023-01-12 28 B 2023-01-13 10 B 2023-01-14 17 B 2023-01-15 10 B 2023-01-16 11 B
Nehmen wir an, wir möchten die Zeilen nach Filiale gruppieren, dann die Zeitreihe nach Woche erneut abtasten und dann die Summe der Werte in der Verkaufsspalte berechnen.
Wir können dazu die folgende Syntax verwenden:
#group by store and resample time series by week group = df. groupby ([pd. Group (freq=' W '), ' store ']) #calculate sum of sales each week by store result = group[' sales ']. sum (). unstack (' store '). fillna (0) #view results print (result) store AB 2023-01-08 14.0 0.0 2023-01-15 16.5 17.0 2023-01-22 0.0 11.0
Aus dem Ergebnis können wir sehen:
- Die Summe der Verkäufe für die Woche bis zum 01.08.2023 in Geschäft A beträgt 14 .
- Die Summe der Verkäufe für die Woche bis zum 01.08.2023 in Filiale B beträgt 0 .
Und so weiter.
Beachten Sie, dass wir uns in diesem Beispiel dafür entschieden haben, die Summe der Werte in der Verkaufsspalte zu berechnen.
Wir könnten jedoch auch andere Metriken wie Anzahl, Durchschnitt, Median, Minimum, Maximum usw. wählen.
Ersetzen Sie einfach sum() im obigen Code durch count() , Mean() , Median() usw. um die Metrik Ihrer Wahl zu berechnen.
Zusätzliche Ressourcen
In den folgenden Tutorials wird erläutert, wie Sie andere gängige Vorgänge in Python ausführen:
So zeichnen Sie eine Zeitreihe in Matplotlib
So zeichnen Sie eine Zeitreihe in Seaborn auf
So berechnen Sie MAPE aus Zeitreihen in Python