Pandas: so verwenden sie groupby mit nlargest()
Sie können die folgende Syntax verwenden, um die n größten Werte nach Gruppe in einem Pandas-DataFrame anzuzeigen:
#display two largest values by group df. groupby (' group_var ')[' values_var ']. nlargest ( 2 )
Und Sie können die folgende Syntax verwenden, um bestimmte Operationen (z. B. die Bildung der Summe) für die n größten Werte pro Gruppe in einem Pandas-DataFrame auszuführen:
#find sum of two largest values by group df. groupby (' group_var ')[' values_var ']. apply ( lambda grp: grp.nlargest ( 2 ) .sum ())
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', 'A', 'B', 'B', 'B', 'B', 'B'],
' points ': [12, 29, 34, 14, 10, 11, 7, 36, 34, 22]})
#view DataFrame
print (df)
team points
0 to 12
1 to 29
2 to 34
3 to 14
4 to 10
5 B 11
6 B 7
7 B 36
8 B 34
9 B 22
Beispiel 1: Zeigen Sie die N größten Werte nach Gruppe an
Die folgende Syntax kann verwendet werden, um die beiden größten Punktwerte gruppiert nach Team anzuzeigen:
#display two largest points values grouped by team
df. groupby (' team ')[' points ']. nlargest ( 2 )
team
At 2 34
1 29
B 7 36
8 34
Name: points, dtype: int64
Das Ergebnis zeigt die beiden größten Punktwerte für jedes Team zusammen mit ihren Indexpositionen im ursprünglichen DataFrame an.
Beispiel 2: Führen Sie eine Operation für die N größten Werte pro Gruppe durch
Wir können die folgende Syntax verwenden, um die Summe der beiden größten Punktwerte gruppiert nach Team zu berechnen:
#calculate sum of two largest points values for each team
df. groupby (' team ')[' points ']. apply ( lambda grp: grp.nlargest ( 2 ) .sum ())
team
At 63
B70
Name: points, dtype: int64
So interpretieren Sie das Ergebnis:
- Die Summe der beiden größten Punktwerte für Team A beträgt 63 .
- Die Summe der beiden größten Punktwerte für Team B beträgt 70 .
Wir können eine ähnliche Syntax verwenden, um den Durchschnitt der beiden größten Punktwerte gruppiert nach Team zu berechnen:
#calculate mean of two largest points values for each team
df. groupby (' team ')[' points ']. apply ( lambda grp: grp.nlargest ( 2 ) .mean ())
team
At 31.5
B 35.0
Name: points, dtype: float64
So interpretieren Sie das Ergebnis:
- Der Durchschnitt der beiden höchsten Punktwerte für Team A beträgt 31,5 .
- Der Durchschnitt der beiden höchsten Punktwerte für Team B beträgt 35,0 .
Hinweis : Die vollständige Dokumentation zur GroupBy- Funktion finden Sie hier .
Zusätzliche Ressourcen
In den folgenden Tutorials wird erläutert, wie andere gängige Vorgänge in Pandas ausgeführt werden:
Pandas: So berechnen Sie die kumulative Summe pro Gruppe
Pandas: So zählen Sie eindeutige Werte nach Gruppen
Pandas: So berechnen Sie den Modus nach Gruppe
Pandas: So berechnen Sie die Korrelation nach Gruppen