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

Einen Kommentar hinzufügen

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