Rata-rata biasanya menjadi angka pertama yang dilaporkan: rata-rata nilai ujian satu kelas, rata-rata penjualan harian satu cabang. Namun satu ukuran pemusatan tidak pernah cukup. Median memberi sudut pandang yang tahan terhadap nilai ekstrem, dan percentile melaporkan posisi data dalam distribusi.
Bab ini membahas tiga ukuran tersebut berurutan: mean beserta padanan method-nya, perilaku median pada jumlah data ganjil dan genap, pengenalan np.percentile, lalu perbandingan mean dan median ketika data memuat outlier.
Mean: Rata-rata Aritmetika #
Mean menjumlahkan seluruh data lalu membaginya dengan banyaknya data. NumPy menyediakannya sebagai fungsi np.mean sekaligus method .mean():
import numpy as np
nilai = np.array([78, 85, 92, 69, 88, 95, 73, 81])
print(nilai.mean())
print(np.mean(nilai))
print(nilai.sum() / nilai.size)Output yang Dihasilkan:
82.625
82.625
82.625Ketiga baris menghasilkan 82.625. Baris ketiga sengaja ditampilkan untuk menunjukkan bahwa mean tidak melakukan perhitungan tersembunyi apa pun: hasilnya persis sum dibagi size. Karena inputnya integer dan pembagian selalu menghasilkan pecahan, mean dikembalikan sebagai float64 — 82.625, bukan 82.
Dua catatan praktis: pertama, bila data memuat NaN, hasil mean juga menjadi NaN dan varian np.nanmean menjadi solusinya (dibahas pada Chapter NaN-aware Aggregation). Kedua, bila tiap data punya bobot yang berbeda — misalnya nilai dengan skala kredit berbeda — mean biasa tidak memadai; gunakan np.average yang dibahas pada Chapter Weighted Average.
Median: Nilai Tengah #
Median mengurutkan data terlebih dahulu, lalu mengambil nilai yang berada di tengah. Perilakunya berbeda untuk jumlah data ganjil dan genap, dan kita verifikasi keduanya:
import numpy as np
ganjil = np.array([7, 3, 9, 1, 5])
genap = np.array([9, 1, 2, 4])
print(np.sort(ganjil))
print(np.median(ganjil))
print(np.sort(genap))
print(np.median(genap))Output yang Dihasilkan:
[1 3 5 7 9]
5.0
[1 2 4 9]
3.0Bedah baris demi baris:
- Baris 5-6 (
np.sort(ganjil),np.median(ganjil)): lima data terurut adalah[1 3 5 7 9]. Dengan jumlah data ganjil, terdapat satu elemen tengah yang jelas — indeks 2 dari data terurut — sehingga median adalah5.0. - Baris 7-8 (
np.sort(genap),np.median(genap)): empat data terurut adalah[1 2 4 9]. Tidak ada satu nilai tengah tunggal, sehingga median adalah rata-rata dua nilai tengah: (2 + 4) / 2 =3.0.
Urutan awal data tidak memengaruhi median karena fungsi ini selalu mengurutkan sendiri datanya — [9, 1, 2, 4] dan [1, 2, 4, 9] memberi hasil yang sama.
Percentile: Posisi Data dalam Distribusi #
Percentile ke-p adalah nilai pemisah yang menyisakan p persen data di bawahnya. Median sebenarnya adalah percentile ke-50, dan kita bisa membuktikan persamaan itu sekaligus mencoba percentile lain:
import numpy as np
nilai = np.array([78, 85, 92, 69, 88, 95, 73, 81])
print(np.percentile(nilai, 50))
print(np.percentile(nilai, 95))
print(np.median(nilai))Output yang Dihasilkan:
83.0
93.95
83.0Baris pertama dan ketiga sama persis: np.percentile(nilai, 50) memang identik dengan np.median(nilai).
Percentile ke-95 dihitung dengan interpolasi. Delapan data terurut berada di indeks 0 sampai 7, dan posisi yang dicari adalah (8 - 1) x 95 / 100 = 6,65 — jatuh di antara data indeks 6 (nilai 92) dan indeks 7 (nilai 95). NumPy menginterpolasi secara linear: 92 + 0,65 x (95 - 92) = 93.95. Artinya, 95 persen nilai ujian berada di bawah 93,95.
Pilihan metode interpolasi lain serta versi quantile berskala 0-1 dibahas pada Chapter quantile dan percentile.
Mean vs Median saat Ada Outlier #
Outlier adalah nilai yang jauh menyimpang dari mayoritas data. Perbedaan terpenting antara mean dan median terlihat justru di situ:
import numpy as np
gaji = np.array([4, 4.5, 5, 5.5, 30]) # dalam juta rupiah
print(gaji.mean())
print(np.median(gaji))Output yang Dihasilkan:
9.8
5.0Empat gaji berada di kisaran 4-5,5 juta, dan satu gaji kontrak bernilai 30 juta. Tanpa outlier, mean adalah 19 / 4 = 4,75 juta; dengan outlier, mean melonjak ke 9.8 — lebih dari dua kali lipat. Median bergerak sedikit saja dan tetap menunjuk kisaran gaji mayoritas: 5.0.
| Aspek | mean | median |
|---|---|---|
| Cara menghitung | total dibagi banyak data | nilai tengah data terurut |
| Pengaruh outlier | ikut terangkat atau tertekan | nyaris tidak berpengaruh |
Hasil untuk gaji di atas | 9.8 | 5.0 |