Pandas: cara menggunakan groupby dan menghitung secara kondisional
Anda dapat menggunakan sintaks dasar berikut untuk melakukan pengelompokan dan penghitungan dengan kondisi di pandas DataFrame:
df. groupby (' var1 ')[' var2 ']. apply ( lambda x:(x==' val '). sum ()). reset_index (name=' count ')
Sintaks khusus ini mengelompokkan baris DataFrame berdasarkan var1 dan kemudian menghitung jumlah baris di mana var2 sama dengan “val”.
Contoh berikut menunjukkan cara menggunakan sintaksis ini dalam praktiknya.
Contoh: Groupby dan Count dengan Kondisi di Pandas
Misalkan kita memiliki pandas DataFrame berikut yang berisi informasi tentang berbagai pemain bola basket:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], ' pos ': ['Gu', 'Fo', 'Fo', 'Fo', 'Gu', 'Gu', 'Fo', 'Fo'], ' points ': [18, 22, 19, 14, 14, 11, 20, 28]}) #view DataFrame print (df) team pos points 0 A Gu 18 1 A Fo 22 2 A Fo 19 3 A Fo 14 4 B Gu 14 5 B Gu 11 6 B Fo 20 7 B Fo 28
Kode berikut menunjukkan cara mengelompokkan DataFrame berdasarkan variabel tim dan menghitung jumlah baris di mana variabel pos sama dengan “Gu”:
#groupby team and count number of 'pos' equal to 'Gu' df_count = df. groupby (' team ')[' pos ']. apply ( lambda x: (x==' Gu '). sum ()). reset_index (name=' count ') #view results print (df_count) team count 0 to 1 1 B 2
Dari hasilnya kita dapat melihat:
- Tim A mempunyai 1 baris yang kolom posnya sama dengan “Gu”
- Tim B mempunyai 2 baris yang kolom posnya sama dengan “Gu”
Kita dapat menggunakan sintaks serupa untuk melakukan pengelompokan dan penghitungan dengan kondisi numerik.
Misalnya, kode berikut menunjukkan cara mengelompokkan berdasarkan variabel tim dan menghitung jumlah baris yang variabel poinnya lebih besar dari 15:
#groupby team and count number of 'points' greater than 15 df_count = df. groupby (' team ')[' points ']. apply ( lambda x: (x>15). sum ()). reset_index (name=' count ') #view results print (df_count) team count 0 to 3 1 B 2
Dari hasilnya kita dapat melihat:
- Tim A mempunyai 3 garis yang kolom poinnya lebih besar dari 15
- Tim B mempunyai 2 garis yang kolom poinnya lebih besar dari 15
Anda dapat menggunakan sintaks serupa untuk melakukan pengelompokan dan penghitungan dengan kondisi spesifik apa pun yang Anda inginkan.
Sumber daya tambahan
Tutorial berikut menjelaskan cara melakukan tugas umum lainnya di panda:
Cara menghitung nilai unik menggunakan Pandas GroupBy
Cara menerapkan fungsi ke Pandas Groupby
Cara Membuat Plot Batang dari Pandas GroupBy