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

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert