Statistik Deskriptif dengan Python
Pahami mean, median, dan modus lewat describe(), dan pelajari lewat contoh data gaji kenapa median sering lebih jujur daripada mean.
Satu Baris untuk Meringkas Seribu Baris
Bayangkan kamu diberi 10.000 baris data gaji dan diminta menjawab "karyawan di sini digaji berapa, sih?". Tidak mungkin membaca satu per satu. Statistik deskriptif adalah jawaban singkatnya: segenggam angka (rata-rata, tengah, sebaran) yang merangkum keseluruhan data. Di pandas, semuanya bisa didapat dalam satu baris lewat describe().
Untuk data analyst, ini adalah langkah pertama setiap eksplorasi data. Sebelum membuat grafik atau model apa pun, analis yang baik selalu bertanya: berapa rata-ratanya, berapa mediannya, seberapa lebar sebarannya. Angka-angka ini menentukan apakah analisismu berikutnya valid atau dibangun di atas pasir.
describe(): Dasbor Mini Datasetmu
import pandas as pd
gaji = pd.Series([4.5, 5.0, 5.2, 4.8, 5.5, 6.0, 5.1, 4.9, 5.3, 5.0])
print(gaji.describe())
print("Modus:", gaji.mode().tolist())describe() menampilkan count, mean, standar deviasi, min, kuartil (25%, 50%, 75%), dan max. Tiga ukuran pusat yang perlu kamu kuasai:
- Mean (rata-rata): jumlah semua nilai dibagi banyaknya data. Peka terhadap nilai ekstrem.
- Median (nilai tengah): nilai di posisi tengah setelah data diurutkan. Kebal terhadap nilai ekstrem.
- Modus: nilai yang paling sering muncul. Berguna untuk data kategori atau nilai yang berulang.
Kapan Median Lebih Jujur dari Mean: Contoh Data Gaji
import pandas as pd
# Gaji 10 karyawan (juta rupiah), satu di antaranya direktur
gaji = pd.Series([4.5, 5.0, 5.2, 4.8, 5.5, 6.0, 5.1, 4.9, 5.3, 45.0])
print("Mean :", gaji.mean()) # terdongkrak direktur
print("Median:", gaji.median()) # tetap mewakili karyawan biasa
print(gaji.describe())Satu gaji direktur 45 juta mengangkat mean ke sekitar 9 juta, angka yang tidak menggambarkan siapa pun di kantor itu. Median tetap di sekitar 5,1 juta, jauh lebih jujur mewakili "karyawan tipikal". Aturan praktisnya: kalau distribusi datamu miring (ada segelintir nilai yang jauh lebih besar), laporkan median. Kalau distribusinya simetris dan rapi, mean boleh dipakai.
Catatan teknis:
mode()mengembalikan Series karena bisa ada lebih dari satu modus. Ambilmode()[0]kalau kamu butuh satu nilai, tapi cek dulu panjangnya supaya tidak ada modus ganda yang terlewat.
Jebakan Umum
SALAH: melaporkan mean sebagai "gaji rata-rata" di data yang miring.
print("Rata-rata gaji:", gaji.mean()) # 9 juta, menyesatkanBENAR: cek kemiringan dulu, lalu pilih ukuran yang jujur.
print("Median gaji:", gaji.median()) # 5,1 juta, mewakili mayoritasKalimat "rata-rata gaji 9 juta" akan membuat calon karyawan kecewa saat tahu gaji riilnya 5 juta. Analis yang ceroboh merusak kepercayaan, analis yang teliti melaporkannya dengan benar.
SALAH: memakai mean untuk data kategori yang di-encode angka.
df["kode_kota"].mean() # rata-rata kode kota tidak punya artiBENAR: untuk data kategori gunakan modus atau hitung frekuensi dengan value_counts(), karena mean hanya bermakna untuk angka yang memang bisa dijumlahkan.
Tantangan
Bedah Data Gaji
Diberikan Series gaji 12 karyawan yang salah satunya bernilai jauh lebih besar. Tampilkan describe(), hitung mean, median, dan modus, lalu jawab: ukuran pusat mana yang paling jujur untuk laporan ke karyawan dan kenapa.