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.
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.
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.
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.
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.
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.
Tiga hal ini yang sering bikin hasil value_counts nyesatin.
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.
Tambahin normalize=True, lalu kaliin 100. Hasilnya berubah jadi proporsi tiap nilai dari total, bukan jumlah baris mentah.
Secara default nggak. Set dropna=False kalau kamu mau baris kosong ikut kehitung, misal waktu ngecek kualitas data.
value_counts ringkas buat satu kolom dan langsung terurut. groupby lebih fleksibel buat kombinasi beberapa kolom dan agregat tambahan. Pilih sesuai kebutuhan.
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.
Nama toko ketik campur huruf besar-kecil, spasi nyasar di ujung, atau kode produk nempel jadi satu. Accessor .str di pandas ngerapiin semua itu tanpa loop.
Model machine learning cuma ngerti angka, bukan teks kayak merah atau biru. get_dummies ngubah kolom kategori jadi kolom 0/1 dalam satu baris kode.
Cara pakai pandas crosstab buat bikin tabel silang yang menghitung frekuensi antar dua kategori. Contoh analisis kategori produk per kota UMKM.