Pandas cut dan qcut: Binning Data di Python (2026)
Blog/Tips & Trik/Pandas cut dan qcut: Binning Data di Python (2026)

Pandas cut dan qcut: Binning Data di Python (2026)

BimaBima
·27 Agustus 2026·8 menit baca

Penulis

Bima

Bima

Founder & Data Professional

Bagikan

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.

FungsiCara bagiIsi tiap binPakai kalau
cutBerdasarkan rentang nilaiBisa timpangPunya batas yang jelas
qcutBerdasarkan kuantilSama banyakMau 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 bins bikin 3 rentang, labels harus 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 pakai float('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.

Coba Langsung

Mau praktek langsung? Mulai latihan SQL gratis

Latihan interaktif, langsung di browser.

Buka NgulikSQL →
Bagikan:
Bima
Ditulis oleh

Bima

Founder & Data Professional

Founder Ngulik Data. Passionate about making data analysis accessible for everyone.

Artikel terkait

NumPy reshape: Ubah Bentuk Array (2026)
Tips & Trik
8 Oktober 2026•9 menit baca

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.

BimaBima
NumPy Array: Dasar-Dasar untuk Analis Data (2026)
Tips & Trik
6 Oktober 2026•10 menit baca

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.

BimaBima
Alternatif iterrows yang Lebih Cepat di Pandas
Tips & Trik
3 Oktober 2026•8 menit baca

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.

BimaBima
Kembali ke Blog
Ngulik Data logoNgulik Data

Platform edukasi data lengkap untuk professionals Indonesia. Belajar SQL, Data Analysis, dan lebih banyak lagi dengan praktek langsung dan feedback real-time.

© 2026 Ngulik Data. Semua hak dilindungi.

TAUTAN
BantuanHargaDatasetBlogAfiliasi
LEGAL
Syarat & KetentuanKebijakan Privasi
Ngulik Data
DatasetLeaderboardBlogStore