Mean dan standard deviation meringkas distribusi dengan dua angka, tetapi keduanya mudah tergeser oleh nilai ekstrem. Pendekatan alternatif adalah statistik posisi: urutkan data, lalu baca nilai pada posisi tertentu. Method quantile() melakukan persis itu; median adalah quantile 0.5, dan sebaran bagian tengah data terbaca dari quantile 0.25 dan 0.75. Chapter ini membahas cara kerja quantile(), hubungannya dengan median dan IQR, serta padanannya di NumPy yang bernama percentile.
Cara Kerja quantile() #
Method quantile(q) mengembalikan nilai pada posisi q * (n - 1) dalam data yang sudah terurut, dengan interpolasi linear sebagai default. Untuk lima nilai skor ujian, posisi quantile 0.25 jatuh tepat di elemen kedua data terurut, sehingga hasilnya 75.0 tanpa interpolasi. Posisi yang jatuh di antara dua nilai akan diinterpolasi linear, seperti yang akan kita lihat pada data ber-NaN di bagian akhir chapter ini.
import pandas as pd
import numpy as np
skor = pd.Series([70, 75, 80, 85, 90], index=["Budi", "Siti", "Dewi", "Andi", "Rina"])
print(skor.quantile(0.5))
print(skor.quantile(0.25))
print(skor.quantile(0.75))
print()
print(skor.quantile([0.25, 0.5, 0.75]))
print()
iqr = skor.quantile(0.75) - skor.quantile(0.25)
print(iqr)
print(np.percentile(skor, 25))
print()
penjualan = pd.DataFrame(
{
"januari": [120, 150, 90, 80, 110],
"februari": [135, None, 105, 95, None],
"maret": [150, 160, 120, 100, 130],
},
index=["Bandung", "Jakarta", "Surabaya", "Denpasar", "Medan"],
)
print(penjualan["februari"].quantile(0.25))
print(penjualan["februari"].quantile(0.5))
print(penjualan["februari"].quantile(0.25, interpolation="lower"))Output yang Dihasilkan:
80.0
75.0
85.0
0.25 75.0
0.50 80.0
0.75 85.0
dtype: float64
10.0
75.0
100.0
105.0
95.0Mari kita baca kode dan outputnya:
- Baris 4: Series
skorberisi lima nilai ujian dengan label nama siswa. - Baris 6-8:
quantile(0.5)menghasilkan 80.0,quantile(0.25)menghasilkan 75.0, danquantile(0.75)menghasilkan 85.0; ketiga posisi jatuh tepat pada elemen data karena n = 5. - Baris 10: memanggil
quantile()dengan list[0.25, 0.5, 0.75]sekaligus mengembalikan Series berindex nilai q, praktis untuk laporan yang membutuhkan beberapa titik potong sekaligus. - Baris 12-14: selisih quantile 0.75 dan 0.25 disimpan sebagai
iqr, lalunp.percentile(skor, 25)dicetak untuk membuktikan padanannya dengan NumPy.
Median dan IQR #
Median adalah quantile 0.5, jadi skor.quantile(0.5) dan skor.median() menghasilkan angka yang sama, yaitu 80.0. Selisih quantile 0.75 dan 0.25 disebut interquartile range (IQR); pada data skor kita, IQR bernilai 10.0. IQR menjadi dasar aturan pencilan yang lazim dipakai boxplot: data di luar rentang Q1 - 1.5 × IQR sampai Q3 + 1.5 × IQR ditandai sebagai pencilan. Karena dibangun dari posisi, median dan IQR tidak tergeser oleh nilai ekstrem seperti mean dan standard deviation.
Percentile: Padanan NumPy #
Percentile dan quantile menghitung hal yang sama dengan skala berbeda: persentil 25 sama dengan quantile 0.25. NumPy menyediakan np.percentile(data, 25) dan hasilnya identik dengan quantile(0.25) di pandas, sebagaimana terlihat pada output 75.0. Saat membaca dokumentasi statistik, ingat konversi sederhana ini: bagi persentil dengan 100 untuk mendapatkan nilai q. Rujukan lengkap NumPy dapat dibaca di dokumentasi NumPy
.
Perilaku NaN dan Parameter interpolation #
Method quantile() tidak memiliki parameter skipna; nilai NaN selalu diabaikan dalam perhitungan. Pada kolom februari yang hanya memuat 95, 105, dan 135, quantile 0.25 jatuh di tengah antara 95 dan 105 sehingga hasil interpolasinya 100.0. Parameter interpolation mengatur sikap itu: nilai "lower" memilih data terurut yang lebih rendah sehingga menghasilkan 95.0, sementara "higher", "midpoint", dan "nearest" menyediakan variasi lain. Pilih interpolasi sesuai kebutuhan laporan, bukan sekadar mengikuti default.
Halaman Descriptive statistics pada user guide merangkum seluruh method statistik yang kita pakai sepanjang Section ini.
Sampai di sini, kotak peralatan statistik dasar pandas sudah lengkap: agregat pusat, batas, sebaran, dan statistik posisi. Chapter berikutnya melengkapi kotak peralatan dengan peringkat dan Top-N: rank(), nlargest(), dan nsmallest(). Pertanyaan tentang hubungan antara dua kolom — korelasi — menjadi tema chapter setelahnya.