Pandas: so verwenden sie groupby mit diff
Sie können die folgende grundlegende Syntax verwenden, um die Funktion „groupby()“ mit der Funktion „diff()“ in Pandas zu verwenden:
df = df. sort_values (by=[' group_var1 ', ' group_var2 ']) df[' diff '] = df. groupby ([' group_var1 '])[' values_var ']. diff (). fillna ( 0 )
In diesem speziellen Beispiel werden die Zeilen des DataFrame nach zwei spezifischen Variablen sortiert, dann nach „group_var1“ gruppiert und die Differenz zwischen den Zeilen in der Spalte „values_var“ berechnet.
Beachten Sie, dass fillna(0) Pandas anweist, immer dann eine Null einzufügen, wenn sich der Wert der Gruppenvariablen zwischen aufeinanderfolgenden Zeilen im DataFrame ändert.
Das folgende Beispiel zeigt, wie diese Syntax in der Praxis verwendet wird.
Beispiel: So verwenden Sie Groupby mit Diff in Pandas
Angenommen, wir haben den folgenden Pandas-DataFrame, der die Gesamtverkäufe zweier verschiedener Geschäfte zu unterschiedlichen Daten enthält:
import pandas as pd #createDataFrame df = pd. DataFrame ({' store ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], ' date ': pd. to_datetime (['2022-01-01', '2022-01-02', '2022-01-03', '2022-01-04', '2022-01-01', '2022-01-02', '2022-01-03', '2022-01-04']), ' sales ': [12, 15, 24, 24, 14, 19, 12, 38]}) #view DataFrame print (df) blind date sales 0 A 2022-01-01 12 1 A 2022-01-02 15 2 A 2022-01-03 24 3 A 2022-01-04 24 4 B 2022-01-01 14 5 B 2022-01-02 19 6 B 2022-01-03 12 7 B 2022-01-04 38
Nehmen wir nun an, wir möchten eine neue Spalte namens sales_diff erstellen, die die Differenz der Verkaufswerte zwischen aufeinanderfolgenden Daten enthält, gruppiert nach Filiale.
Wir können dazu die folgende Syntax verwenden:
#sort DataFrame by store and date
df = df. sort_values (by=[' store ', ' date '])
#create new column that contains difference between sales grouped by store
df[' sales_diff '] = df. groupby ([' store '])[' sales ']. diff (). fillna ( 0 )
#view update DataFrame
print (df)
store date sales sales_diff
0 A 2022-01-01 12 0.0
1 A 2022-01-02 15 3.0
2 A 2022-01-03 24 9.0
3 A 2022-01-04 24 0.0
4 B 2022-01-01 14 0.0
5 B 2022-01-02 19 5.0
6 B 2022-01-03 12 -7.0
7 B 2022-01-04 38 26.0
Die neue Spalte „sales_diff“ enthält die Differenz der Verkaufswerte zwischen aufeinanderfolgenden Daten, gruppiert nach Filiale.
Wir können zum Beispiel sehen:
- Der Unterschied in den Umsätzen von Geschäft A zwischen dem 01.01.2022 und dem 01.02.2022 beträgt 3 .
- Die Umsatzdifferenz von Geschäft A zwischen dem 01.02.2022 und dem 01.03.2022 beträgt 9 .
- Der Unterschied in den Umsätzen von Geschäft A zwischen dem 03.01.2022 und dem 04.01.2022 beträgt 0 .
Und so weiter.
Zusätzliche Ressourcen
In den folgenden Tutorials wird erläutert, wie andere gängige Vorgänge in Pandas ausgeführt werden:
So führen Sie eine GroupBy-Summe in Pandas durch
So verwenden Sie Groupby und Plot in Pandas
So zählen Sie eindeutige Werte mit GroupBy in Pandas