Panda's: hoe groupby te gebruiken met nlargest()


U kunt de volgende syntaxis gebruiken om de n grootste waarden per groep in een pandas DataFrame weer te geven:

 #display two largest values by group
df. groupby (' group_var ')[' values_var ']. nlargest ( 2 )

En je kunt de volgende syntaxis gebruiken om bepaalde bewerkingen uit te voeren (zoals het nemen van de som) op de n grootste waarden per groep in een pandas DataFrame:

 #find sum of two largest values by group
df. groupby (' group_var ')[' values_var ']. apply ( lambda grp: grp.nlargest ( 2 ) .sum ())

De volgende voorbeelden laten zien hoe u elke methode in de praktijk kunt gebruiken met de volgende panda’s DataFrame:

 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

Voorbeeld 1: Geef de N grootste waarden per groep weer

De volgende syntaxis kan worden gebruikt om de twee grootste puntwaarden gegroepeerd per team weer te geven:

 #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

Het resultaat toont de twee grootste puntwaarden voor elk team , samen met hun indexposities in het originele DataFrame.

Voorbeeld 2: voer een bewerking uit op de N grootste waarden per groep

We kunnen de volgende syntaxis gebruiken om de som te berekenen van de twee grootste puntwaarden gegroepeerd per team :

 #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

Zo interpreteert u het resultaat:

  • De som van de twee grootste puntwaarden voor team A is 63 .
  • De som van de twee grootste puntwaarden voor team B is 70 .

We kunnen een vergelijkbare syntaxis gebruiken om het gemiddelde te berekenen van de twee grootste puntwaarden gegroepeerd per team :

 #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

Zo interpreteert u het resultaat:

  • Het gemiddelde van de twee hoogste puntwaarden voor Team A is 31,5 .
  • Het gemiddelde van de twee hoogste puntwaarden voor Team B bedraagt 35,0 .

Let op : U kunt hier de volledige documentatie voor de GroupBy- functie vinden.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende bewerkingen in panda’s kunt uitvoeren:

Panda’s: hoe bereken je de cumulatieve som per groep
Panda’s: unieke waarden per groep tellen
Panda’s: hoe de modus per groep te berekenen
Panda’s: hoe de correlatie per groep te berekenen

Einen Kommentar hinzufügen

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