Sekumpulan data bisa berisi puluhan angka, tetapi laporan manajemen hanya memberi ruang untuk satu kalimat: “secara rata-rata begini”. Angka tunggal yang mewakili sekumpulan data itulah ukuran tendensi sentral. Sayangnya, satu-satunya angka yang kebanyakan orang hafal — rata-rata — sering dipakai di tempat yang salah, seperti menghitung rata-rata gaji di sebuah perusahaan yang penghasilannya timpang. Pada chapter ini kita membedah tiga ukuran tendensi sentral (mean, median, modus), memakai statistics bawaan Python untuk menghitungnya, dan melatih kepekaan memilih ukuran yang tepat.
Tiga Ukuran, Satu Pertanyaan #
Ketiga ukuran ini menjawab pertanyaan yang sama — “di mana pusat data berada?” — dengan cara berbeda:
| Ukuran | Cara hitung | Paling cocok untuk |
|---|---|---|
| Mean | Σx / n — seluruh nilai dijumlah lalu dibagi banyaknya data | Data numerik tanpa nilai ekstrem |
| Median | Nilai tengah data terurut (rata-rata dua tengah bila n genap) | Data miring atau mengandung outlier |
| Modus | Nilai yang paling sering muncul | Data kategorikal, bisa juga numerik |
Mean memakai seluruh informasi sehingga peka terhadap perubahan satu angka saja; median hanya melihat peringkat sehingga tahan terhadap nilai ekstrem; modus melihat frekuensi sehingga satu-satunya yang berlaku untuk data berupa kategori seperti nama menu. Ketiganya dibawa fungsi mean(), median(), dan mode() dari modul statistics.
Mean yang Tergeser Satu Gaji #
Kasus klasik ketimpangan gaji: sebelas pegawai Toko Kopi Kita menerima 3,1 sampai 4,0 juta rupiah per bulan, sementara pemiliknya menerima 25 juta. Kita hitung mean dan median sebelum dan sesudah pemilik ikut dihitung:
import statistics
gaji_pegawai = [3.2, 3.5, 3.1, 4.0, 3.8, 3.3, 3.6, 3.4, 3.2, 3.7, 3.5]
gaji_pemilik = 25.0
gaji_semua = gaji_pegawai + [gaji_pemilik]
print("Sebelas pegawai:")
print(f" mean = {statistics.mean(gaji_pegawai):.2f} juta rupiah")
print(f" median = {statistics.median(gaji_pegawai):.2f} juta rupiah")
print()
print("Sebelas pegawai + pemilik:")
print(f" mean = {statistics.mean(gaji_semua):.2f} juta rupiah")
print(f" median = {statistics.median(gaji_semua):.2f} juta rupiah")Output yang Dihasilkan:
Sebelas pegawai:
mean = 3.48 juta rupiah
median = 3.50 juta rupiah
Sebelas pegawai + pemilik:
mean = 5.28 juta rupiah
median = 3.50 juta rupiahMari kita telaah hasilnya:
- Baris 4-5 (
gaji_pegawai,gaji_pemilik): sebelas nilai gaji pegawai berkerumun rapat, sementara satu nilai 25,0 berdiri jauh di kanan — pola khas distribusi miring ke kanan. statistics.mean: memakai rumus Σx / n. Menambahkan satu gaji 25 juta menaikkan mean dari 3,48 ke 5,28 — melonjak 52% hanya karena satu orang. Kabar “rata-rata gaji 5,28 juta” itu benar secara hitungan tetapi menyesatkan sebagai representasi: tak seorang pun pegawai digaji sedekat itu.statistics.median: memakai urutan. Nilai tengah 3,5 tidak beranjak sedikit pun karena satu nilai ekstrem di ekor tidak menggeser posisi tengah. Untuk gaji, harga rumah, atau durasi kunjungan yang condong timpang, median adalah ringkasan yang lebih jujur.
Modus untuk Data Kategorikal #
Mean dan median menuntut data bernilai angka; modus tidak. Fungsi statistics.mode() mengembalikan nilai yang paling sering muncul, sehingga modus bisa dihitung dari daftar nama menu:
import statistics
from collections import Counter
pesanan = [
"kopi susu", "teh tawar", "kopi susu", "matcha latte", "kopi susu",
"teh tawar", "kopi susu", "americano", "teh tawar", "kopi susu",
"matcha latte", "kopi susu", "teh tawar", "kopi susu", "americano",
]
menu_terlaris = statistics.mode(pesanan)
print(f"Modus pesanan : {menu_terlaris}")
print(f"Frekuensinya : {pesanan.count(menu_terlaris)} dari {len(pesanan)} pesanan")
print()
print("Peringkat frekuensi:")
for menu, jumlah in Counter(pesanan).most_common():
print(f" {menu:13s} {jumlah} pesanan")Output yang Dihasilkan:
Modus pesanan : kopi susu
Frekuensinya : 7 dari 15 pesanan
Peringkat frekuensi:
kopi susu 7 pesanan
teh tawar 4 pesanan
matcha latte 2 pesanan
americano 2 pesananBedah baris-per-barisnya:
- Baris 10 (
statistics.mode(pesanan)): memindai frekuensi setiap nilai lalu mengembalikan juara satu — “kopi susu” dengan 7 kemunculan. Modus adalah satu-satunya tendensi sentral yang bermakna untuk kolom kategorikal seperti ini. - Baris 11 (
pesanan.count(...)): menghitung ulang frekuensi si modus, karenamode()hanya mengembalikan nilainya tanpa frekuensinya. - Baris 15-16 (
Counter(...).most_common()): memeringkat seluruh nilai dari yang terbanyak. Mengetahui “kopi susu laris” menjadi jauh lebih berguna bila kita tahu selisihnya dengan pesaing: 7 lawan 4, bukan 7 lawan 6.
Frekuensi modus juga menunjukkan dominasi: 7 dari 15 berarti hampir separuh pesanan jatuh ke satu menu. Bila frekuensinya hanya 4 dari 15 dengan empat menu berbeda, “menu terlaris” tidak lagi terlalu berarti.
Ketika Modus Tidak Tunggal #
Data bisa saja punya lebih dari satu nilai yang paling sering muncul. Fungsi mode() tetap mengembalikan satu jawaban (nilai yang lebih dulu muncul di data), sedangkan multimode() mengembalikan seluruhnya:
import statistics
ulasan = [4, 5, 4, 3, 5]
print(f"Data ulasan : {ulasan}")
print(f"Modus : {statistics.mode(ulasan)}")
print(f"Semua modus : {statistics.multimode(ulasan)}")
print(f"Median : {statistics.median(ulasan)}")
print(f"Mean : {statistics.mean(ulasan):.2f}")Output yang Dihasilkan:
Data ulasan : [4, 5, 4, 3, 5]
Modus : 4
Semua modus : [4, 5]
Median : 4
Mean : 4.20Pada data ulasan tersebut, angka 4 dan 5 sama-sama muncul dua kali. mode() memilih 4 karena nilai 4 lebih dulu muncul di daftar, sedangkan multimode() melaporkan keduanya sekaligus. Data bimodal semacam ini sebaiknya dilaporkan sebagai “modus 4 dan 5”, bukan memaksakan satu jawaban tunggal.
Rangkuman #
- Mean = Σx / n memakai seluruh data sehingga peka terhadap outlier; median memakai urutan sehingga tahan terhadap outlier.
- Untuk distribusi miring seperti gaji dan harga aset, median mewakili “warga biasa” lebih baik daripada mean.
- Modus berlaku untuk data kategorikal; frekuensi modus dibanding total data menunjukkan seberapa dominan nilainya.
mode()mengembalikan satu modus (yang lebih dulu muncul),multimode()mengembalikan seluruh modus untuk data dengan jawaban kembar.
Ketiga ukuran ini merangkum pusat data, tetapi dua dataset dengan pusat sama bisa berperilaku sangat berbeda: penjualan dua cabang toko bisa sama-sama rata-rata 50 gelas per hari, namun yang satu stabil dan yang lain naik-turun. Ukuran yang menjawab “seberapa lebar data menyebar” menjadi bahasan chapter Ukuran Penyebaran .