So berechnen sie den offset pro gruppe in pandas


Sie können die folgenden Methoden verwenden, um gruppenverschobene Werte in einem Pandas-DataFrame zu berechnen:

Methode 1: Berechnen Sie den Versatz einer Gruppe

 df[' lagged_values '] = df. groupby ([' group '])[' values ']. shift ( 1 )

Methode 2: Berechnen Sie den Offset durch mehrere Gruppen

 df[' lagged_values '] = df. groupby ([' group1 ', ' group2 '])[' values ']. shift ( 1 )

Beachten Sie, dass der Wert der Funktion „shift()“ die Anzahl der Werte angibt, für die die Verschiebung berechnet werden soll.

Die folgenden Beispiele zeigen, wie die einzelnen Methoden in der Praxis angewendet werden.

Beispiel 1: Berechnen Sie den Offset einer Gruppe

Nehmen wir an, wir haben den folgenden Pandas-DataFrame, der die Verkäufe zweier Geschäfte an aufeinanderfolgenden Tagen zeigt:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' store ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' sales ': [18, 10, 14, 13, 19, 24, 25, 29]})
#view DataFrame
print (df)

  blind sales
0 to 18
1 to 10
2 to 14
3 to 13
4 B 19
5 B 24
6 B 25
7 B 29

Wir können die folgende Syntax verwenden, um eine Offset-Spalte zu erstellen, die die Verkäufe des Vortages für jedes Geschäft anzeigt:

 #add column that displays lag of sales column by store
df[' lagged_sales '] = df. groupby ([' store '])[' sales ']. shift ( 1 )

#view updated DataFrame
print (df)

  store sales lagged_sales
0 to 18 NaN
1 to 10 18.0
2 A 14 10.0
3 A 13 14.0
4 B 19 NaN
5 B 24 19.0
6 B 25 24.0
7 B 29 25.0

So interpretieren Sie das Ergebnis:

  • Der erste Wert in der Offset-Spalte ist NaN , da es in der Verkaufsspalte für Geschäft A keinen vorherigen Wert gibt.
  • Der zweite Wert in der Offset-Spalte ist 18 , da es sich um den vorherigen Wert in der Verkaufsspalte für Filiale A handelt.

Und so weiter.

Beispiel 2: Berechnen Sie den Versatz mehrerer Gruppen

Angenommen, wir haben den folgenden Pandas-DataFrame, der die Verkäufe von Mitarbeitern zweier Geschäfte an aufeinanderfolgenden Tagen zeigt:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' store ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' employee ':['O', 'O', 'R', 'R', 'O', 'O', 'R', 'R'],
                   ' sales ': [18, 10, 14, 13, 19, 24, 25, 29]})
#view DataFrame
print (df)

  store employee sales
0 AO 18
1 AO 10
2 AR 14
3 AR 13
4 BO 19
5 BO 24
6 BR 25
7 BR 29

Mit der folgenden Syntax können wir eine Offset-Spalte erstellen, die die Umsätze des Vortages für jeden Mitarbeiter in jeder Filiale anzeigt:

 #add column that displays lag of sales column by store and employee
df[' lagged_sales '] = df. groupby ([' store ',' employee '])[' sales ']. shift ( 1 )

#view updated DataFrame
print (df)

  store employee sales lagged_sales
0 AO 18 NaN
1 AO 10 18.0
2 AR 14 NaN
3 AR 13 14.0
4 BO 19 NaN
5 BO 24 19.0
6 BR 25 NaN
7 BR 29 25.0

In der neuen Spalte „lagged_sales“ werden die Umsätze des Vortages für jeden Mitarbeiter in jeder Filiale angezeigt.

Hinweis : In diesem Beispiel haben wir nach zwei Spalten gruppiert, Sie können jedoch nach so vielen Spalten gruppieren, wie Sie möchten, indem Sie in der Funktion „groupby()“ so viele Variablennamen einschließen, wie Sie möchten.

Zusätzliche Ressourcen

In den folgenden Tutorials wird erläutert, wie Sie andere häufige Aufgaben in Pandas ausführen:

So löschen Sie Spalten in Pandas
So schließen Sie Spalten in Pandas aus
So wenden Sie eine Funktion auf ausgewählte Spalten in Pandas an
So ändern Sie die Spaltenreihenfolge in Pandas DataFrame

Einen Kommentar hinzufügen

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