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