So wenden sie eine funktion auf pandas groupby an
Sie können die folgende grundlegende Syntax verwenden, um die Funktionen groupby() und apply() zusammen in einem Pandas-DataFrame zu verwenden:
df. groupby (' var1 '). apply ( lambda x: some function)
Die folgenden Beispiele zeigen, wie diese Syntax in der Praxis mit dem folgenden Pandas DataFrame verwendet wird:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'B', 'B', 'B', 'B'], ' points_for ': [18, 22, 19, 14, 11, 20, 28], ' points_against ': [14, 21, 19, 14, 12, 20, 21]}) #view DataFrame print (df) team points_for points_against 0 to 18 14 1 To 22 21 2 A 19 19 3 B 14 14 4 B 11 12 5 B 20 20 6 B 28 21
Beispiel 1: Verwenden Sie groupby() und apply(), um relative Häufigkeiten zu finden
Der folgende Code zeigt, wie Sie die Funktionen groupby( ) und apply() verwenden, um die relativen Häufigkeiten jedes Teamnamens im Pandas-DataFrame zu ermitteln:
#find relative frequency of each team name in DataFrame
df. groupby (' team '). apply ( lambda x:x[' team ']. count ()/ df.shape [0])
team
A 0.428571
B 0.571429
dtype:float64
Aus dem Ergebnis können wir ersehen, dass Team A in 42,85 % aller Zeilen und Team B in 57,14 % aller Zeilen vorkommt.
Beispiel 2: Verwenden Sie groupby() und apply(), um Maximalwerte zu finden
Der folgende Code zeigt, wie Sie die Funktionen groupby( ) und apply() verwenden, um die maximalen „points_for“-Werte für jedes Team zu ermitteln:
#find max "points_for" values for each team
df. groupby (' team '). apply ( lambda x:x[' points_for ']. max ())
team
At 22
B28
dtype: int64
Aus dem Ergebnis können wir ersehen, dass die maximale Punktzahl von Team A 22 und die maximale Punktzahl von Team B 28 beträgt.
Beispiel 3: Verwenden Sie groupby() und apply(), um eine benutzerdefinierte Berechnung durchzuführen
Der folgende Code zeigt, wie Sie die Funktionen groupby( ) und apply() verwenden, um die durchschnittliche Differenz zwischen „points_for“ und „points_against“ für jedes Team zu ermitteln:
#find max "points_for" values for each team
df. groupby (' team '). apply ( lambda x: (x[' points_for '] - x[' points_against ']). mean ())
team
A 1.666667
B 1.500000
dtype:float64
Aus den Ergebnissen können wir ersehen, dass die durchschnittliche Differenz zwischen „Punkten dafür“ und „Punkten dagegen“ 1,67 für Team A und 1,50 für Team B beträgt.
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