Pandas: cara mengelompokkan berdasarkan rentang nilai


Anda dapat menggunakan sintaks berikut untuk menggunakan fungsi groupby() di panda untuk mengelompokkan kolom berdasarkan rentang nilai sebelum melakukan agregasi:

 df. groupby (pd. cut (df[' my_column '], [0, 25, 50, 75, 100])). sum ()

Contoh khusus ini akan mengelompokkan baris DataFrame menurut rentang nilai berikut di kolom yang disebut my_column :

  • (0,25]
  • (25, 50]
  • (50, 75]
  • (75, 100]

Ini kemudian akan menghitung jumlah nilai di semua kolom DataFrame menggunakan rentang nilai ini sebagai grup.

Contoh berikut menunjukkan cara menggunakan sintaksis ini dalam praktiknya.

Contoh: Cara mengelompokkan berdasarkan rentang nilai di Pandas

Mari kita asumsikan kita memiliki pandas DataFrame berikut yang berisi informasi tentang ukuran berbagai toko ritel dan total penjualannya:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' store_size ': [14, 25, 26, 29, 45, 58, 67, 81, 90, 98],
                   ' sales ': [15, 18, 24, 25, 20, 35, 34, 49, 44, 49]})

#view DataFrame
print (df)

   store_size sales
0 14 15
1 25 18
2 26 24
3 29 25
4 45 20
5 58 35
6 67 34
7 81 49
8 90 44
9 98 49

Kita dapat menggunakan sintaks berikut untuk mengelompokkan DataFrame berdasarkan rentang spesifik kolom store_size , lalu menghitung jumlah semua kolom lain di DataFrame menggunakan rentang tersebut sebagai grup:

 #group by ranges of store_size and calculate sum of all columns
df. groupby (pd. cut (df[' store_size '], [0, 25, 50, 75, 100])). sum ()

	 store_size sales
store_size		
(0.25] 39 33
(25, 50] 100 69
(50, 75] 125 69
(75, 100] 269 142

Dari hasilnya kita dapat melihat:

  • Untuk baris dengan nilai store_size antara 0 dan 25, jumlah store_size adalah 39 dan jumlah penjualan adalah 33 .
  • Untuk baris dengan nilai store_size antara 25 dan 50, jumlah store_size adalah 100 dan jumlah sales adalah 69 .

Dan seterusnya.

Jika mau, Anda juga dapat menghitung jumlah penjualan saja untuk setiap rentang ukuran_toko :

 #group by ranges of store_size and calculate sum of sales
df. groupby (pd. cut (df[' store_size '], [0, 25, 50, 75, 100]))[' sales ']. sum ()

store_size
(0.25] 33
(25, 50] 69
(50, 75] 69
(75, 100] 142
Name: sales, dtype: int64

Anda juga dapat menggunakan fungsi NumPy arange() untuk memecah variabel menjadi beberapa rentang tanpa menentukan setiap titik potong secara manual:

 import numpy as np

#group by ranges of store_size and calculate sum of sales
df. groupby (pd. cut (df[' store_size '], np. arange (0, 101, 25)))[' sales ']. sum ()

store_size
(0.25] 33
(25, 50] 69
(50, 75] 69
(75, 100] 142
Name: sales, dtype: int64

Perhatikan bahwa hasil ini cocok dengan contoh sebelumnya.

Catatan : Anda dapat menemukan dokumentasi lengkap untuk fungsi NumPy arange() di sini .

Sumber daya tambahan

Tutorial berikut menjelaskan cara melakukan tugas umum lainnya di panda:

Pandas: Cara menghitung nilai unik menggunakan groupby
Pandas: Cara menghitung mean dan norma kolom di groupby
Pandas: Cara menggunakan as_index di groupby

Tambahkan komentar

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