Pandas cut dan qcut: Binning Data di Python (2026)
TL;DR
Pandas cut dan qcut dipakai buat binning, yaitu mengubah data numerik jadi beberapa kelompok. cut membagi berdasarkan rentang nilai yang kamu tentukan sendiri, sedangkan qcut membagi berdasarkan kuantil supaya tiap kelompok isinya sama banyak. Pakai cut buat batas bisnis yang jelas, qcut buat segmen yang seimbang.
Pandas cut dan qcut dipakai buat binning, yaitu mengubah angka yang berderet jadi beberapa kelompok atau kategori. cut membagi berdasarkan rentang nilai yang kamu tentukan, sedangkan qcut membagi berdasarkan kuantil supaya tiap kelompok isinya sama banyak.
Sering butuh ini pas mau bikin segmen. Umur jadi kelompok usia, nominal belanja jadi kategori kecil-sedang-besar, skor jadi grade A sampai E.
Di sini aku jelasin dua fungsi ini, bedanya, dan kapan pilih yang mana. Contohnya segmentasi pelanggan toko.
Apa itu binning di pandas?
Binning adalah proses mengelompokkan nilai numerik yang kontinu jadi sejumlah kategori. Misalnya nominal transaksi dari Rp 5 ribu sampai Rp 2 juta dipadatkan jadi tiga label: kecil, sedang, besar. Pandas nyediain dua alat buat ini, cut dan qcut, dengan cara bagi yang beda.
Kenapa perlu? Data mentah yang terlalu detail susah dianalisis. Setelah dikelompokkan, kamu bisa hitung berapa pelanggan di tiap segmen dan lihat polanya.
Gimana cara pakai pandas cut?
cut membagi data berdasarkan batas nilai yang kamu tetapkan sendiri. Kamu kasih daftar titik potong, lalu pandas taruh tiap nilai ke bin yang sesuai. Cocok kalau kamu udah punya patokan yang jelas, misalnya kelompok umur atau rentang harga.
import pandas as pd
df = pd.DataFrame({'belanja': [15000, 85000, 250000, 600000, 1500000]})
df['segmen'] = pd.cut(
df['belanja'],
bins=[0, 50000, 300000, 2000000],
labels=['kecil', 'sedang', 'besar']
)
print(df)
Batasnya kamu yang atur: 0 sampai 50 ribu jadi kecil, sampai 300 ribu jadi sedang, sisanya besar. Hasilnya kolom kategori yang rapi dan gampang dibaca.
Kamu juga bisa kasih bins berupa satu angka, misalnya bins=4. Pandas bakal bagi rentang jadi 4 bagian sama lebar secara otomatis.
Gimana cara pakai pandas qcut?
qcut membagi data berdasarkan kuantil, jadi tiap bin isinya jumlah baris yang kurang lebih sama. Kamu gak nentuin batas nilai, cukup nentuin berapa kelompok. Pandas yang cari titik potong biar merata.
# bagi pelanggan jadi 4 kelompok sama banyak (kuartil)
df['kuartil'] = pd.qcut(df['belanja'], q=4, labels=['Q1','Q2','Q3','Q4'])
print(df)
Kalau kamu punya 100 pelanggan dan q=4, tiap kuartil isinya sekitar 25 orang. Ini pas buat ranking, misalnya nentuin 25% pelanggan paling boros buat program loyalti.
| Fungsi | Cara bagi | Isi tiap bin | Pakai kalau |
|---|---|---|---|
| cut | Berdasarkan rentang nilai | Bisa timpang | Punya batas yang jelas |
| qcut | Berdasarkan kuantil | Sama banyak | Mau tiap grup rata |
Contoh kasus: segmentasi pelanggan toko_berkah
toko_berkah punya 480 pelanggan dengan total belanja setahun. Mereka mau bikin tiga tier: reguler, silver, gold. Awalnya mereka pakai cut dengan batas Rp 500 ribu dan Rp 2 juta.
df['tier'] = pd.cut(
df['total_belanja'],
bins=[0, 500000, 2000000, float('inf')],
labels=['reguler', 'silver', 'gold']
)
print(df['tier'].value_counts())
Dari dataset ngulikdata, hasil cut ternyata timpang: 410 pelanggan masuk reguler, cuma 12 yang gold. Program gold jadi nyaris kosong. Waktu diganti pakai qcut dengan q=3, tiap tier langsung isi sekitar 160 pelanggan. Tier gold yang tadinya 12 orang jadi 160 orang, cukup buat bikin program loyalti yang hidup.
Ini inti bedanya. cut ngikutin batas bisnis, qcut ngikutin sebaran data. Buat segmentasi yang butuh grup seimbang, qcut lebih aman.
Kesalahan umum pakai cut dan qcut
- Jumlah label gak cocok sama jumlah bin. Kalau
binsbikin 3 rentang,labelsharus 3. Kalau enggak, error. - Nilai di luar rentang jadi NaN. Di
cut, angka di bawah batas terkecil atau di atas terbesar bakal NaN. Pastiin batasnya nutup semua data, atau pakaifloat('inf'). - qcut error karena banyak nilai kembar. Kalau banyak angka sama, kuantilnya bisa tabrakan. Tambahin
duplicates='drop'buat ngatasin. - Salah kira qcut pakai rentang tetap. qcut gak peduli lebar rentang, dia cuma peduli jumlah baris tiap grup sama.
Kalau kamu cuma mau tau distribusinya tanpa label, hilangin argumen labels. Pandas bakal nampilin rentang tiap bin apa adanya.
FAQ
Apa bedanya cut dan qcut di pandas?
cut membagi data berdasarkan rentang nilai yang kamu tentukan, jadi isi tiap bin bisa timpang tergantung sebaran data. qcut membagi berdasarkan kuantil, jadi tiap bin isinya jumlah baris yang kurang lebih sama. Pakai cut kalau punya batas yang jelas kayak kelompok umur. Pakai qcut kalau mau tiap grup seimbang buat ranking.
Kapan sebaiknya pakai qcut daripada cut?
Pakai qcut kalau kamu mau tiap kelompok isinya rata, misalnya buat bikin kuartil pelanggan atau desil pendapatan. qcut cocok saat sebaran datamu miring dan cut bikin grup timpang. Kalau kamu justru butuh batas bisnis yang tetap, misalnya harga di atas 1 juta selalu masuk kategori mahal, cut lebih tepat karena batasnya kamu yang atur.
Kenapa qcut saya error 'Bin edges must be unique'?
Error itu muncul karena datamu punya banyak nilai kembar, sehingga titik potong kuantilnya jadi sama dan tabrakan. Solusinya tambahin argumen duplicates='drop', misalnya pd.qcut(x, q=4, duplicates='drop'). Pandas bakal buang batas yang kembar, walau akibatnya jumlah bin bisa jadi lebih sedikit dari yang kamu minta.
Gimana cara menghitung jumlah data di tiap bin?
Setelah bikin kolom hasil cut atau qcut, panggil value_counts() di kolom itu. Misalnya df['segmen'].value_counts() bakal nampilin berapa baris di tiap kategori. Kalau mau urut sesuai urutan bin, bukan berdasarkan jumlah, tambahin sort=False jadi value_counts(sort=False). Ini cara cepat ngecek apakah segmenmu seimbang atau timpang.
Bisa gak cut dan qcut menghasilkan angka, bukan label teks?
Bisa. Kalau kamu hilangin argumen labels, pandas ngasih rentang interval tiap bin. Kalau kamu set labels=False, pandas ngasih nomor bin berupa angka mulai dari 0. Nomor angka ini berguna kalau hasilnya mau dipakai buat perhitungan lanjutan atau jadi input model, bukan sekadar dibaca manusia.
Penutup
Rangkuman: cut bagi data pakai rentang yang kamu tentukan, qcut bagi pakai kuantil biar tiap grup sama banyak. Pilih cut buat batas bisnis, qcut buat segmen seimbang.
Coba ambil satu kolom angka di datamu, bikin segmennya pakai dua fungsi ini, dan lihat mana yang lebih masuk akal buat kasusmu.
Mau lanjut olah data pandas? Baca cara hitung frekuensi nilai pakai value_counts dan cara agregasi data pakai groupby. Buat konsep dasarnya, cek glosarium binning dan glosarium kuantil. Dokumentasi resmi ada di halaman pandas.cut.
Mau praktek langsung? Mulai latihan SQL gratis
Latihan interaktif, langsung di browser.
Artikel terkait
NumPy reshape: Ubah Bentuk Array (2026)
Fungsi reshape di NumPy ngatur ulang bentuk array tanpa ngubah datanya. Ini cara pakainya, arti angka -1, dan cara ngeflat array.
NumPy Array: Dasar-Dasar untuk Analis Data (2026)
NumPy array bikin hitungan data di Python jauh lebih cepat dari list biasa. Ini dasar bikin, slicing, dan operasi array buat analis.
Alternatif iterrows yang Lebih Cepat di Pandas
iterrows nyaman ditulis tapi lambat. Ini urutan alternatif iterrows di pandas dari yang tercepat, plus benchmark biar kamu tau kapan pakai yang mana.