Pandy: jak używać groupby z nlargest()


Możesz użyć następującej składni, aby wyświetlić n największych wartości według grupy w pandzie DataFrame:

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

Możesz także użyć następującej składni, aby wykonać określone operacje (takie jak sumowanie) na n największych wartościach na grupę w pandzie DataFrame:

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

Poniższe przykłady pokazują, jak w praktyce używać każdej metody z następującą ramką DataFrame pand:

 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

Przykład 1: Wyświetl N największych wartości według grupy

Aby wyświetlić dwie największe wartości punktowe pogrupowane według zespołu , można zastosować następującą składnię:

 #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

Wynik wyświetla dwie największe wartości punktowe dla każdego zespołu wraz z ich pozycjami indeksu w oryginalnej ramce DataFrame.

Przykład 2: wykonaj operację na N największych wartościach na grupę

Aby obliczyć sumę dwóch największych wartości punktowych pogrupowanych według drużyn, możemy zastosować następującą składnię:

 #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

Oto jak zinterpretować wynik:

  • Suma dwóch największych wartości punktowych dla Drużyny A wynosi 63 .
  • Suma dwóch największych wartości punktowych dla Drużyny B wynosi 70 .

Podobną składnię możemy zastosować do obliczenia średniej z dwóch największych wartości punktowych pogrupowanych według drużyn :

 #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

Oto jak zinterpretować wynik:

  • Średnia z dwóch najwyższych wartości punktowych drużyny A wynosi 31,5 .
  • Średnia z dwóch najwyższych wartości punktowych drużyny B wynosi 35,0 .

Uwaga : pełną dokumentację funkcji GroupBy znajdziesz tutaj .

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe operacje na pandach:

Pandy: jak obliczyć skumulowaną sumę na grupę
Pandy: jak liczyć unikalne wartości według grupy
Pandy: jak obliczyć tryb według grupy
Pandy: jak obliczyć korelację według grup

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *