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