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

Einen Kommentar hinzufügen

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