Pandas: cara menggunakan groupby dengan nlargest()


Anda dapat menggunakan sintaks berikut untuk menampilkan n nilai terbesar berdasarkan grup dalam pandas DataFrame:

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

Dan Anda dapat menggunakan sintaks berikut untuk melakukan operasi tertentu (seperti mengambil jumlah) pada n nilai terbesar per grup dalam pandas DataFrame:

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

Contoh berikut menunjukkan cara menggunakan setiap metode dalam praktik dengan pandas DataFrame berikut:

 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

Contoh 1: Menampilkan N nilai terbesar berdasarkan grup

Sintaks berikut dapat digunakan untuk menampilkan dua nilai titik terbesar yang dikelompokkan berdasarkan tim :

 #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

Hasilnya menampilkan dua nilai poin terbesar untuk setiap tim , beserta posisi indeksnya di DataFrame asli.

Contoh 2: melakukan operasi pada N nilai terbesar per grup

Kita dapat menggunakan sintaks berikut untuk menghitung jumlah dari dua nilai poin terbesar yang dikelompokkan berdasarkan tim :

 #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

Berikut cara menafsirkan hasilnya:

  • Jumlah dua nilai poin terbesar Tim A adalah 63 .
  • Jumlah dua nilai poin terbesar Tim B adalah 70 .

Kita dapat menggunakan sintaks serupa untuk menghitung rata-rata dari dua nilai poin terbesar yang dikelompokkan berdasarkan tim :

 #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

Berikut cara menafsirkan hasilnya:

  • Rata-rata dari dua nilai poin tertinggi Tim A adalah 31.5 .
  • Rata-rata dari dua nilai poin tertinggi Tim B adalah 35.0 .

Catatan : Anda dapat menemukan dokumentasi lengkap untuk fungsi GroupBy di sini .

Sumber daya tambahan

Tutorial berikut menjelaskan cara melakukan operasi umum lainnya di panda:

Pandas: cara menghitung jumlah kumulatif per kelompok
Pandas: cara menghitung nilai unik berdasarkan kelompok
Pandas: cara menghitung mode berdasarkan grup
Pandas: cara menghitung korelasi berdasarkan kelompok

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *