Pandas value_counts: Hitung Frekuensi Nilai
TL;DR
Method value_counts di pandas ngitung berapa kali tiap nilai unik muncul di sebuah kolom, lalu ngurutin dari yang paling sering. Hasilnya berupa Series dengan nilai jadi index dan jumlah kemunculan jadi isinya. Kamu bisa ubah jadi persentase pakai normalize=True, dan secara default value_counts ngabaikan NaN kecuali kamu set dropna=False.
value_counts adalah method pandas yang ngitung berapa kali tiap nilai unik muncul di sebuah kolom. Satu baris kode, langsung dapet daftar frekuensi yang udah terurut.
Ini biasanya method pertama yang aku pakai waktu ketemu dataset baru. Cepat, ringkas, dan langsung kasih gambaran isi kolomnya.
Di artikel ini kamu bakal belajar cara pakainya, ubah jadi persen, ngelompokin angka jadi rentang, plus contoh nyata dari data order UMKM.
Apa itu value_counts di pandas?
value_counts ngitung frekuensi tiap nilai unik di satu kolom, lalu ngurutin dari yang paling sering. Hasilnya berupa Series dengan nilai jadi index dan jumlah kemunculan jadi isinya. Ini cara tercepat buat tau distribusi kategori tanpa nulis groupby panjang.
Cara pakainya nempel di kolom, yang di pandas disebut Series:
import pandas as pd
df['metode_bayar'].value_counts()
Misal hasilnya kayak gini:
qris 420
tunai 310
transfer 120
Name: count, dtype: int64
Langsung keliatan QRIS paling sering dipakai. Nggak perlu sortir manual, value_counts udah ngurutin dari terbesar.
Gimana cara bikin value_counts jadi persentase?
Tambahin argumen normalize=True. Hasilnya berubah dari jumlah baris jadi proporsi antara 0 dan 1. Kaliin 100 kalau mau langsung dalam persen. Ini cara cepat ngejawab pertanyaan seperti berapa persen order datang dari satu kota.
df['kota'].value_counts(normalize=True) * 100
Contoh hasilnya:
Jakarta 48.2
Bandung 22.5
Surabaya 17.1
Medan 12.2
Name: proportion, dtype: float64
Sekarang kamu tau hampir separuh order datang dari Jakarta, tanpa ngitung total baris dulu.
Apakah value_counts menghitung sel kosong?
Nggak, secara default value_counts ngabaikan NaN. Kalau kamu lagi ngecek kualitas data dan pengen tau berapa banyak sel yang kosong, tambahin dropna=False. Baris NaN bakal ikut kehitung dan muncul di hasil.
df['kategori'].value_counts(dropna=False)
Trik ini sering nyelametin aku. Kolom yang keliatan penuh ternyata punya banyak sel kosong yang kesembunyi. Kalau ketemu banyak NaN, lanjut bersihin pakai fillna atau dropna.
Gimana cara value_counts untuk angka jadi rentang?
Pakai argumen bins buat ngelompokin angka jadi beberapa rentang sama lebar. value_counts bakal ngitung berapa baris masuk tiap rentang. Ini berguna buat lihat sebaran harga atau umur tanpa bikin kolom kategori manual.
df['harga'].value_counts(bins=4)
Hasilnya empat rentang harga beserta jumlah produk di masing-masing. Cocok buat ngintip sebaran sebelum bikin histogram beneran.
Contoh kasus: analisis order toko_berkah
Toko_berkah punya DataFrame order 1.200 baris dengan kolom produk, kota, dan metode_bayar. Pemilik toko mau tau tiga hal cepat: produk terlaris, sebaran kota, dan porsi metode bayar.
# Produk terlaris
df['produk'].value_counts().head(5)
# Porsi metode bayar dalam persen
df['metode_bayar'].value_counts(normalize=True) * 100
Dari 1.200 order, muncul insight yang nggak ketebak: 5 produk teratas nyumbang 61% dari total order. Sisanya, 38 produk lain, cuma bagi-bagi 39% sisanya.
Ini pola 80/20 yang jelas. Pemilik toko jadi tau produk mana yang wajib selalu ready stok, dan mana yang boleh dipesan sesuai permintaan aja.
Buat analisis yang lebih dalam per kombinasi kolom, lanjut ke pandas groupby.
Kesalahan umum saat pakai value_counts
Tiga hal ini yang sering bikin hasil value_counts nyesatin.
- Lupa NaN diabaikan. Persentase dari normalize dihitung dari data yang ada isinya aja. Kalau kolommu banyak kosong, angkanya bisa nyesatin. Cek dulu pakai dropna=False.
- Kategori nggak konsisten. "Jakarta", "jakarta", dan "JKT" kehitung tiga kategori beda. Rapiin dulu teksnya pakai str.lower() sebelum value_counts.
- Dipakai ke DataFrame utuh. value_counts paling pas buat satu kolom. Kalau butuh hitung lintas beberapa kolom, pakai groupby.
FAQ
Apa fungsi value_counts di pandas?
value_counts ngitung berapa kali tiap nilai unik muncul di sebuah kolom, terurut dari yang paling sering. Hasilnya Series dengan nilai jadi index dan jumlah kemunculan jadi isinya. Cara tercepat buat tau distribusi kategori.
Gimana bikin value_counts jadi persen?
Tambahin normalize=True, lalu kaliin 100. Hasilnya berubah jadi proporsi tiap nilai dari total, bukan jumlah baris mentah.
Apakah value_counts menghitung NaN?
Secara default nggak. Set dropna=False kalau kamu mau baris kosong ikut kehitung, misal waktu ngecek kualitas data.
Apa beda value_counts dan groupby?
value_counts ringkas buat satu kolom dan langsung terurut. groupby lebih fleksibel buat kombinasi beberapa kolom dan agregat tambahan. Pilih sesuai kebutuhan.
Penutup
value_counts itu method kecil yang kepakai tiap kali ketemu data baru. Inti pakainya: satu baris buat frekuensi, normalize buat persen, dropna=False buat ngecek sel kosong.
Sekali kamu terbiasa, ini jadi langkah pertama buat kenalan sama dataset apa pun.
Mau lanjut ke agregasi yang lebih dalam? Cek glosarium DataFrame dan dokumentasi resmi di pandas.Series.value_counts.
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.