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

Tambahkan komentar

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