Kolom angka punya mean() dan std(); kolom kategori punya pertanyaan yang berbeda: nilai apa yang paling sering muncul? Berapa porsi pesanan rasa Cokelat dibandingkan Stroberi? Method value_counts() menjawabnya dengan menghitung frekuensi setiap nilai unik pada satu kolom. Pada Chapter ini kita memakainya terhadap daftar 15 pesanan es krim, termasuk cara membaca proporsi dan cara menangani baris yang kosong.
Menghitung Frekuensi Setiap Nilai Unik #
Kita mulai dari Series bernama rasa yang berisi catatan 15 pesanan. Satu pesanan tidak mencatat rasanya sama sekali, sehingga nilainya None dan pandas membacanya sebagai NaN. Dari data sekecil ini pun, penghitungan manual sudah merepotkan; pada data ribuan baris, value_counts() menjadi satu-satunya cara yang masuk akal.
import pandas as pd
pesanan = pd.Series(
["Cokelat", "Vanila", "Cokelat", "Stroberi", "Cokelat",
"Vanila", "Pandan", "Cokelat", "Vanila", "Stroberi",
None, "Pandan", "Vanila", "Cokelat", "Vanila"],
name="rasa",
)
print(pesanan.value_counts())
print()
print(pesanan.value_counts(normalize=True))
print()
print(pesanan.value_counts(dropna=False))Output yang Dihasilkan:
rasa
Cokelat 5
Vanila 5
Stroberi 2
Pandan 2
Name: count, dtype: int64
rasa
Cokelat 0.357143
Vanila 0.357143
Stroberi 0.142857
Pandan 0.142857
Name: proportion, dtype: float64
rasa
Cokelat 5
Vanila 5
Stroberi 2
Pandan 2
NaN 1
Name: count, dtype: int64Mari kita bedah kode di atas:
- Baris 3-8 (
pesanan = pd.Series(...)): kita membangun Series dari list 15 pesanan dengan parametername="rasa", sehingga hasil akhir punya nama kolom yang jelas. - Baris 10 (
pesanan.value_counts()): pandas menghitung jumlah kemunculan setiap nilai unik, lalu mengurutkannya dari yang terbanyak; hasilnya Series dengan namacount. - Baris 12 (
pesanan.value_counts(normalize=True)): jumlah kemunculan diubah menjadi proporsi dengan nama Seriesproportion. - Baris 14 (
pesanan.value_counts(dropna=False)): barisNaNikut dihitung dan muncul sebagai baris tersendiri di urutan terakhir.
Hasil pertama menunjukkan Cokelat dan Vanila masing-masing terjual 5 gelas, diikuti Stroberi dan Pandan masing-masing 2 gelas. Total baris yang dihitung adalah 14, bukan 15, karena secara default satu baris NaN dikeluarkan dari penghitungan. Untuk nilai yang jumlahnya sama, pandas mempertahankan urutan kemunculan pertama pada data; Cokelat muncul lebih dulu daripada Vanila, sehingga Cokelat berada di atas.
Proporsi dengan Parameter normalize #
Angka jumlah mentah sulit dibandingkan ketika ukuran data berubah; proporsi memberi gambaran yang stabil. Dengan normalize=True, setiap jumlah dibagi total baris yang tidak kosong, sehingga 0.357143 pada Cokelat berasal dari 5 / 14. Nama Series hasilnya berubah dari count menjadi proportion. Untuk menampilkannya sebagai persentase, kalikan hasilnya dengan 100.
Proporsi membantu ketika kita membandingkan dua periode penjualan dengan volume berbeda. Lima ratus gelas Cokelat pada bulan ramai dan lima puluh gelas pada bulan sepi tidak bisa dibandingkan langsung, tetapi proporsinya bisa. Membaca 0.357143 sebagai “sekitar 35.7 persen pesanan” jauh lebih mudah dikomunikasikan ke tim dibandingkan menyebut jumlah mentahnya.
Menyertakan Nilai Kosong dengan dropna #
Parameter dropna mengatur perlakuan baris kosong. Nilai default True membuat NaN tidak dihitung sama sekali, praktis untuk analisis frekuensi biasa. Ketika kita mengubahnya menjadi False, NaN muncul sebagai baris tersendiri dengan jumlah 1 pada contoh kita, tepat di bawah kategori lainnya karena paling sedikit.
| Parameter | Default | Efek |
|---|---|---|
normalize | False | Mengubah hasil dari jumlah menjadi proporsi |
dropna | True | Mengeluarkan NaN; False menyertakan baris kosong |
ascending | False | True mengurutkan hasil dari jumlah terkecil |
bins | None | Membagi data numerik ke dalam interval sebelum dihitung |
Baris kosong yang terbaca dari dropna=False biasanya menjadi pemicu pembersihan data sebelum analisis lanjutan. Dokumentasi pandas.Series.value_counts
merinci parameter-parameter di atas, dan halaman Essential basic functionality
menempatkan value_counts() di antara alat ringkasan bawaan pandas.
value_counts() melengkapi kotak alat statistik kita untuk kolom kategori. Chapter berikutnya sekaligus penutup Section ini, yaitu Statistik Deskriptif, menyatukan hampir semua method yang sudah kita pelajari ke dalam satu panggilan describe().