pythonpandasoutlierMahir6 mnt baca

Membersihkan Data: Mendeteksi Outlier

Pelajari metode IQR dan z-score untuk menemukan nilai ekstrem, cara cek visual dengan boxplot, dan keputusan penting: kapan outlier dibuang dan kapan dipertahankan.

Outlier: Satu Angka yang Merusak Semua

Bayangkan satu kelas berisi 30 siswa dengan nilai rata-rata 70, lalu ada satu nilai 1000 yang nyasar karena salah input. Rata-rata kelas langsung melonjak dan tidak lagi menggambarkan siapa pun di kelas itu. Itulah outlier: nilai yang jauh menyimpang dari pola umum data, dan satu saja cukup untuk merusak mean, merusak grafik, bahkan merusak model machine learning.

Untuk data analyst, outlier adalah teka-teki, bukan sekadar sampah. Ada outlier yang merupakan kesalahan input (umur pelanggan 250 tahun) dan wajib dibuang, tapi ada juga yang merupakan fakta bisnis paling penting (satu pelanggan sultan yang belanja 100 juta sebulan). Salah buang berarti kamu menghapus insight paling berharga di datasetmu.

Metode IQR: Pagar Statistik yang Sederhana

IQR (Interquartile Range) adalah metode paling populer karena sederhana dan tidak butuh asumsi distribusi normal. Idenya: hitung rentang antara kuartil 1 dan kuartil 3, lalu pasang "pagar" 1,5 kali IQR di luar kedua kuartil. Nilai di luar pagar dianggap outlier.

python
import pandas as pd

harga = pd.Series([12000, 15000, 13000, 14000, 16000,
                   15000, 13500, 14500, 200000])

q1 = harga.quantile(0.25)
q3 = harga.quantile(0.75)
iqr = q3 - q1
batas_bawah = q1 - 1.5 * iqr
batas_atas = q3 + 1.5 * iqr

outlier = harga[(harga < batas_bawah) | (harga > batas_atas)]
bersih = harga[(harga >= batas_bawah) & (harga <= batas_atas)]
print("Outlier:", outlier.tolist())
print("Rata-rata kotor:", harga.mean(), "| bersih:", bersih.mean())

Lihat bedanya: satu nilai 200000 mengangkat rata-rata dari sekitar 14000 menjadi lebih dari 30000. Setelah dibersihkan, rata-rata kembali jujur.

Metode Z-Score dan Cek Visual Boxplot

Z-score mengukur seberapa jauh sebuah nilai dari rata-rata dalam satuan standar deviasi. Aturan umum: nilai dengan |z| lebih dari 3 adalah outlier. Metode ini cocok kalau datamu mendekati distribusi normal.

python
import pandas as pd
import matplotlib.pyplot as plt

gaji = pd.Series([5, 5.5, 6, 4.8, 5.2, 6.1, 5.8, 50])

z = (gaji - gaji.mean()) / gaji.std()
print(gaji[z.abs() > 3].tolist())  # kandidat outlier

gaji.plot.box()
plt.title("Boxplot Gaji (juta rupiah)")
plt.show()

Boxplot adalah cara tercepat untuk "melihat" outlier. Kotak menunjukkan rentang tengah data (Q1 sampai Q3), garis tengahnya adalah median, dan titik-titik yang terpisah jauh di luar adalah outlier. Selalu lihat boxplot sebelum memutuskan apa pun, karena angka saja tidak bercerita selengkap gambar.

Catatan teknis: IQR lebih aman untuk data miring (skewed) seperti gaji atau harga, sedangkan z-score mengasumsikan data mendekati normal. Kalau datamu miring berat, z-score bisa menandai terlalu banyak outlier palsu.

Dibuang atau Dipertahankan?

Ini keputusan bisnis, bukan sekadar rumus. Buang outlier kalau dia jelas kesalahan: umur negatif, suhu ruangan 500 derajat, atau transaksi Rp 0 dari bug sistem. Pertahankan (atau analisis terpisah) kalau dia fakta nyata: pelanggan korporat dengan order raksasa, atau lonjakan penjualan saat promo 12.12. Praktik terbaik analis senior: jangan diam-diam menghapus, tapi laporkan berapa outlier yang ditemukan, apa penyebab yang diduga, dan bagaimana angka berubah sebelum dan sesudah dibersihkan.

Jebakan Umum

SALAH: menghapus semua outlier secara otomatis tanpa investigasi.

python
bersih = df[(df["total"] >= batas_bawah) & (df["total"] <= batas_atas)]

BENAR: selidiki dulu, lalu dokumentasikan keputusanmu.

python
kandidat = df[(df["total"] < batas_bawah) | (df["total"] > batas_atas)]
print(kandidat)  # cek: salah input atau pelanggan sultan?

SALAH: memakai mean untuk meringkas data yang masih mengandung outlier.

python
rata2 = df["gaji"].mean()  # satu gaji 50 juta merusak rata-rata

BENAR: kalau outlier dipertahankan karena dia fakta bisnis, ringkas dengan median yang kebal terhadapnya, atau pisahkan analisis outlier ke laporan tersendiri.

Tantangan

Buru Outlier Harga

Diberikan Series harga produk yang berisi satu nilai salah input (jauh lebih besar dari yang lain). Gunakan metode IQR untuk menemukan outlier, tampilkan nilainya, lalu hitung rata-rata sebelum dan sesudah outlier dibuang.