So verwenden sie die funktionen groupby() und transform() in pandas


Sie können die folgenden Methoden verwenden, um die Funktionen groupby() und transform() zusammen in einem Pandas-DataFrame zu verwenden:

Methode 1: Verwenden Sie groupby() und transform() mit integrierter Funktion

 df[' new '] = df. groupby (' group_var ')[' value_var ']. transform (' mean ')

Methode 2: Verwenden Sie groupby() und transform() mit einer benutzerdefinierten Funktion

 df[' new '] = df. groupby (' group_var ')[' value_var ']. transform ( lambda x: some function)

Die folgenden Beispiele zeigen, wie jede Methode in der Praxis mit dem folgenden Pandas DataFrame verwendet wird:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' points ': [30, 22, 19, 14, 14, 11, 20, 28]})

#view DataFrame
print (df)

  team points
0 to 30
1 to 22
2 to 19
3 to 14
4 B 14
5 B 11
6 B 20
7 B 28

Beispiel 1: Verwenden Sie groupby() und transform() mit integrierter Funktion

Der folgende Code zeigt, wie Sie mit den Funktionen groupby( ) und transform() eine neue Spalte mit dem Namen „mean_points“ zum DataFrame hinzufügen:

 #create new column called mean_points
df[' mean_points '] = df. groupby (' team ')[' points ']. transform (' mean ')

#view updated DataFrame
print (df)

  team points mean_points
0 to 30 21.25
1 to 22 21.25
2 A 19 21.25
3 to 14 21.25
4 B 14 18.25
5 B 11 18.25
6 B 20 18.25
7 B 28 18.25

Der durchschnittliche Punktwert für Spieler von Team A betrug 21,25 und der durchschnittliche Punktwert für Spieler von Team B betrug 18,25 , sodass diese Werte jedem Spieler in einer neuen Spalte entsprechend zugewiesen wurden.

Beachten Sie, dass wir auch eine andere integrierte Funktion wie sum() verwenden könnten, um eine neue Spalte zu erstellen, die die Summe der für jedes Team erzielten Punkte anzeigt:

 #create new column called sum_points
df[' sum_points '] = df. groupby (' team ')[' points ']. transform (' sum ')

#view updated DataFrame
print (df)

  team points sum_points
0 to 30 85
1 to 22 85
2 A 19 85
3 to 14 85
4 B 14 73
5 B 11 73
6 B 20 73
7 B 28 73

Die Summe der Punkte der Spieler der Mannschaft A betrug 85 und die Summe der Punkte der Spieler der Mannschaft B betrug 73 , sodass diese Werte in einer neuen Spalte jedem Spieler entsprechend zugeordnet wurden.

Beispiel 2: Verwenden Sie groupby() und transform() mit einer benutzerdefinierten Funktion

Der folgende Code zeigt, wie Sie mit den Funktionen groupby( ) und transform() eine benutzerdefinierte Funktion erstellen, die den Prozentsatz der Gesamtpunkte berechnet, die jeder Spieler in seinem jeweiligen Team erzielt:

 #create new column called percent_of_points
df[' percent_of_points '] = df. groupby (' team ')[' points ']. transform ( lambda x:x/ x.sum ())

#view updated DataFrame
print (df)

  team points percent_of_points
0 A 30 0.352941
1 A 22 0.258824
2 A 19 0.223529
3 A 14 0.164706
4 B 14 0.191781
5 B 11 0.150685
6 B 20 0.273973
7 B 28 0.383562

So interpretieren Sie das Ergebnis:

  • Der erste Spieler von Team A erzielte 30 von insgesamt 85 Punkten unter den Spielern von Team A. Somit betrug sein Prozentsatz an der Gesamtpunktzahl 30/85 = 0,352941 .
  • Der zweite Spieler von Team A erzielte 22 von insgesamt 85 Punkten unter den Spielern von Team A. Somit betrug sein Prozentsatz an der Gesamtpunktzahl 22/85 = 0,258824 .

Und so weiter.

Beachten Sie, dass wir das Lambda- Argument in der Funktion transform() verwenden können, um jede gewünschte benutzerdefinierte Berechnung durchzuführen.

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