pythonstatistikpandasMahir6 mnt baca

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

python
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

python
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. Ambil mode()[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.

python
print("Rata-rata gaji:", gaji.mean())  # 9 juta, menyesatkan

BENAR: cek kemiringan dulu, lalu pilih ukuran yang jujur.

python
print("Median gaji:", gaji.median())  # 5,1 juta, mewakili mayoritas

Kalimat "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.

python
df["kode_kota"].mean()  # rata-rata kode kota tidak punya arti

BENAR: 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.