Cara menerapkan fungsi ke pandas groupby


Anda dapat menggunakan sintaks dasar berikut untuk menggunakan fungsi groupby() dan apply() bersama-sama dalam pandas DataFrame:

 df. groupby (' var1 '). apply ( lambda x: some function)

Contoh berikut menunjukkan cara menggunakan sintaksis ini dalam praktiknya dengan pandas DataFrame berikut:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' points_for ': [18, 22, 19, 14, 11, 20, 28],
                   ' points_against ': [14, 21, 19, 14, 12, 20, 21]})

#view DataFrame
print (df)

  team points_for points_against
0 to 18 14
1 To 22 21
2 A 19 19
3 B 14 14
4 B 11 12
5 B 20 20
6 B 28 21

Contoh 1: Gunakan groupby() dan apply() untuk mencari frekuensi relatif

Kode berikut menunjukkan cara menggunakan fungsi groupby( ) dan apply() untuk menemukan frekuensi relatif setiap nama tim di pandas DataFrame:

 #find relative frequency of each team name in DataFrame
df. groupby (' team '). apply ( lambda x:x[' team ']. count ()/ df.shape [0])

team
A 0.428571
B 0.571429
dtype:float64

Dari hasilnya terlihat tim A tampil di 42,85% seluruh baris dan tim B muncul di 57,14% seluruh baris.

Contoh 2: Gunakan groupby() dan apply() untuk menemukan nilai maksimum

Kode berikut menunjukkan cara menggunakan fungsi groupby( ) dan apply() untuk menemukan nilai “points_for” maksimum untuk setiap tim:

 #find max "points_for" values for each team
df. groupby (' team '). apply ( lambda x:x[' points_for ']. max ())

team
At 22
B28
dtype: int64

Dari hasil tersebut terlihat bahwa poin maksimal yang dicetak oleh tim A adalah 22 dan poin maksimal yang dicetak oleh tim B adalah 28.

Contoh 3: Gunakan groupby() dan apply() untuk melakukan penghitungan khusus

Kode berikut menunjukkan cara menggunakan fungsi groupby( ) dan apply() untuk mencari perbedaan rata-rata antara “points_for” dan “points_against” untuk setiap tim:

 #find max "points_for" values for each team
df. groupby (' team '). apply ( lambda x: (x[' points_for '] - x[' points_against ']). mean ())

team
A 1.666667
B 1.500000
dtype:float64

Dari hasil tersebut terlihat bahwa rata-rata selisih “poin untuk” dan “poin lawan” adalah 1,67 untuk tim A dan 1,50 untuk tim B.

Sumber daya tambahan

Tutorial berikut menjelaskan cara melakukan operasi umum lainnya di panda:

Cara melakukan penjumlahan GroupBy di Pandas
Cara menggunakan Groupby dan Plot di Pandas
Cara menghitung nilai unik menggunakan GroupBy di Pandas

Tambahkan komentar

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