Pandas: cara menggunakan groupby dengan jumlah bin


Anda dapat menggunakan sintaks berikut untuk menghitung jumlah kotak suatu variabel yang dikelompokkan berdasarkan variabel lain di pandas:

 #define bins
groups = df. groupby ([' group_var ', pd. cut (df. value_var , bins)])

#display bin count by group variable
groups. size (). unstack ()

Contoh berikut menunjukkan cara menggunakan sintaksis ini dalam praktiknya.

Contoh: Gunakan GroupBy dengan jumlah bin di Pandas

Misalkan kita memiliki panda DataFrame berikut yang menunjukkan poin yang dicetak oleh pemain bola basket dari tim berbeda:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'A', 'A', 'A', 'A',
                            'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B'],
                   ' points ': [4, 7, 7, 11, 12, 15, 19, 19,
                             5, 5, 11, 12, 14, 14, 15, 15]})

#view DataFrame
print (df)

   team points
0 to 4
1 to 7
2 to 7
3 to 11
4 to 12
5 to 15
6 to 19
7 to 19
8 B 5
9 B 5
10 B 11
11 B 12
12 B 14
13 B 14
14 B 15
15 B 15

Kita dapat menggunakan sintaks berikut untuk menghitung frekuensi poin untuk setiap tim, yang dikelompokkan ke dalam wadah tertentu:

 #define groups
groups = df. groupby ([' team ', pd. cut (df. points , [0, 10, 15, 20])])

#display bin count grouped by team
groups. size (). unstack ()

points (0, 10] (10, 15] (15, 20]
  team			
     A 3 3 2
     B 2 6 0

Berikut cara menafsirkan hasilnya:

  • Totalnya, 3 pemain dari tim A mencetak antara 0 dan 10 poin.
  • Totalnya, 3 pemain dari tim A mencetak antara 10 dan 15 poin.
  • Secara total, 2 pemain dari tim A mencetak antara 15 dan 20 poin.

Dan seterusnya.

Perhatikan bahwa kita dapat menentukan bin mana yang kita inginkan dalam fungsi pd.cut() .

Misalnya, kita hanya dapat mendefinisikan dua bin:

 #define groups
groups = df. groupby ([' team ', pd. cut (df. points , [0, 10, 20])])

#display bin count grouped by team
groups. size (). unstack ()

points (0, 10] (10, 20]
  team		
     At 3 5
     B 2 6

Berikut cara menafsirkan hasilnya:

  • Totalnya, 3 pemain dari tim A mencetak antara 0 dan 10 poin.
  • Secara total, 5 pemain dari Tim A mencetak antara 10 dan 20 poin.
  • Secara total, 2 pemain dari tim B mencetak antara 0 dan 10 poin.
  • Secara total, 6 pemain dari Tim B mencetak antara 10 dan 20 poin.

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

Catatan 2 : Anda dapat menemukan dokumentasi lengkap fungsi cut 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 *