TL;DR
Mean adalah rata-rata (total dibagi jumlah data), median adalah nilai tengah setelah data diurutkan, dan modus adalah nilai yang paling sering muncul. Buat data gaji yang punya nilai ekstrem, median lebih jujur daripada mean, soalnya satu gaji direktur bisa narik rata-rata naik jauh. Pakai mean kalau sebaran datanya rata, median kalau ada nilai ekstrem, modus kalau datanya berupa kategori.
Mean adalah rata-rata: total semua nilai dibagi banyaknya data. Median adalah nilai yang persis di tengah setelah data diurutkan. Modus adalah nilai yang paling sering muncul.
Tiga-tiganya ngaku bisa jawab pertanyaan "berapa nilai tengahnya?", dan tiga-tiganya bisa kasih jawaban yang jauh beda dari data yang sama persis.
Ini yang bikin berita gaji sering aneh. Rata-rata gaji karyawan katanya 6 juta, tapi kamu dan semua temen kamu di kantor nggak ada yang segitu. Bukan datanya bohong, cuma metriknya salah pilih.
Mean, median, dan modus itu tiga cara ngukur pusat data. Mean jumlahin semua nilai lalu bagi dengan banyaknya data. Median urutin data dari kecil ke besar lalu ambil yang paling tengah. Modus cari nilai yang frekuensinya paling tinggi. Bedanya ada di sensitivitas: mean kegoyang sama nilai ekstrem, median dan modus nggak.
Coba pakai lima angka: 2, 3, 3, 4, 88.
Mean-nya 20. Padahal empat dari lima angka itu ada di bawah 5. Satu angka 88 udah cukup buat bikin mean jadi nggak nyambung sama kenyataan.
Angka 88 di sini namanya outlier, nilai yang jauh nyempil dari sisanya. Data bisnis penuh sama outlier: satu pesanan korporat, satu hari flash sale, satu owner yang gajinya beda kasta.
Aturannya pendek: kalau sebaran data kamu simetris dan nggak ada nilai ekstrem, pakai mean. Kalau ada nilai ekstrem atau distribusinya miring, pakai median. Kalau datanya kategori (bukan angka), pakai modus.
| Metrik | Pakai kalau | Contoh nyata |
|---|---|---|
| Mean | Data rata, nggak ada ekstrem, dan kamu peduli sama total | Rata-rata transaksi per hari selama sebulan normal |
| Median | Ada outlier atau distribusinya miring | Gaji, harga rumah, durasi pengiriman, nilai order |
| Modus | Datanya kategori atau kamu cari yang paling laku | Metode bayar terpopuler, ukuran baju paling laris |
Ada satu tes cepat yang aku pakai tiap kali pegang kolom angka baru: hitung mean dan median bareng-bareng. Kalau selisihnya gede, berarti ada yang narik data kamu, dan mean-nya udah nggak bisa dipercaya sendirian.
Ini data gaji bulanan dari tabel karyawan di dataset toko_berkah, sebuah toko kelontong dengan 9 orang.
3.200.000
3.400.000
3.500.000
3.500.000
3.800.000
4.000.000
4.200.000
4.500.000
25.000.000 <- owner
Hitung ketiganya:
Selisih mean sama median di sini 2,3 juta, hampir 61% dari median-nya. Padahal delapan dari sembilan orang gajinya di bawah 4,6 juta.
Kalau HRD bikin slide "rata-rata gaji karyawan kita Rp6,1 juta", angkanya bener secara matematika dan nyesatin secara praktik. Median 3,8 juta jauh lebih nyerminin gaji orang yang beneran kerja di sana.
Dan kalau kamu mau tau seberapa nyebar gajinya, mean dan median aja nggak cukup, kamu butuh standar deviasi buat ngukur lebarnya sebaran.
Di Excel dan Google Sheets, ketiganya udah ada fungsinya. Anggap data gaji ada di kolom B2:B10.
=AVERAGE(B2:B10) ' mean -> 6122222
=MEDIAN(B2:B10) ' median -> 3800000
=MODE.SNGL(B2:B10) ' modus -> 3500000
MODE.SNGL cuma balikin satu nilai walaupun ada dua modus. Kalau kamu curiga datanya punya lebih dari satu puncak, pakai MODE.MULT dan masukin sebagai array. Detail argumennya bisa kamu cek di halaman fungsi MEDIAN sama fungsi AVERAGE.
Di SQL, mean gampang. Median-nya yang suka bikin repot.
-- PostgreSQL / BigQuery
SELECT
AVG(gaji) AS mean_gaji,
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY gaji) AS median_gaji
FROM karyawan;
MySQL sebelum versi 8 nggak punya PERCENTILE_CONT, jadi kamu harus akalin pakai window function. Dokumentasi resmi PostgreSQL soal fungsi agregat urutan ini ada di postgresql.org.
1. Laporin mean tanpa ngecek outlier. Ini kesalahan nomor satu. Sebelum nulis "rata-rata", selalu bandingin sama median-nya dulu. Butuh 5 detik, nyelametin kredibilitas kamu.
2. Ngerata-ratain persentase. Conversion rate 10% dari 20 pengunjung dan 2% dari 5.000 pengunjung nggak bisa dirata-ratain jadi 6%. Kamu harus jumlahin pembilang dan penyebutnya dulu, baru bagi.
3. Ngambil modus dari data kontinu. Kalau kolomnya nilai transaksi dengan desimal, hampir nggak ada nilai yang persis sama. Modus-nya jadi angka acak yang kebetulan muncul dua kali. Buat kasus gini, bikin bucket dulu (0-50rb, 50-100rb, dst) baru cari bucket terlaris.
4. Buang outlier tanpa mikir. Outlier kadang justru pelanggan paling berharga kamu. Sebelum dibuang, cek dulu itu error input atau memang transaksi beneran. Kalau beneran, pisahin analisisnya, jangan dihapus.
Dua-duanya jawab pertanyaan yang beda, jadi nggak ada yang menang mutlak. Mean ngasih tau total kalau dibagi rata, cocok buat hitung omzet harian. Median ngasih tau posisi orang di tengah antrian. Buat data gaji, harga rumah, atau durasi pengiriman, median hampir selalu lebih aman soalnya data-data itu punya nilai ekstrem yang narik mean.
Soalnya sebaran gaji itu miring ke kanan. Kebanyakan orang ngumpul di angka bawah, terus ada segelintir orang dengan gaji puluhan kali lipat. Kalau pakai mean, angka segelintir orang itu narik rata-rata naik dan hasilnya nggak nyerminin gaji orang kebanyakan. Median cuma peduli sama urutan, jadi satu gaji direktur nggak bikin angkanya meleset.
Bisa, dan itu normal. Kalau ada dua nilai yang sama-sama paling sering muncul, datanya disebut bimodal. Biasanya ini sinyal kalau kamu lagi nyampur dua kelompok yang beda dalam satu tabel, misalnya harga grosir dan eceran ketumpuk jadi satu. Kalau nemu ini, pecah datanya per kelompok dulu sebelum ambil kesimpulan.
Modus paling kepake kalau datanya kategori, bukan angka. Metode pembayaran yang paling sering dipakai, ukuran baju yang paling laku, jam checkout yang paling ramai. Mean dan median nggak masuk akal buat data kayak gini, soalnya kamu nggak bisa ngerata-ratain QRIS dan tunai.
Hitung mean dan median-nya barengan. Kalau selisihnya gede, hampir pasti ada nilai ekstrem yang narik mean. Di contoh gaji toko_berkah, mean 6,1 juta versus median 3,8 juta, dan selisih itu langsung nunjuk ke satu gaji owner 25 juta. Kalau mean dan median mepet, sebaran datanya kemungkinan besar aman.
Tiga hal penting soal mean, median, modus:
Mau langsung praktek hitung median dan mean di data beneran? Coba latihan query-nya di panduan SQL dari nol, dataset toko_berkah udah nunggu di sana.
Mau praktek langsung? Mulai latihan SQL gratis
Latihan interaktif, langsung di browser.
Cara pakai pandas rolling buat hitung moving average dan haluskan data time series yang naik-turun. Lengkap dengan contoh penjualan harian UMKM.
Data transaksi harian sering terlalu ramai buat dilihat. Pandas resample ngeringkasnya jadi total per minggu atau per bulan cuma dengan satu baris, asal indeksnya tanggal.
Kolom tanggal yang kebaca sebagai teks bikin sortir dan hitung selisih hari jadi kacau. Ini cara pd.to_datetime ubah teks jadi tanggal asli, plus tangani format berantakan.