Main Logo
  • Home
  • About
  • Kursus
    • Paket Kursus
    • Roadmap Profesi
  • Elearning
  • Blog
Daftar
Main Logo
  • Home
  • About
  • Kursus
    • Paket Kursus
    • Roadmap Profesi
  • Elearning
  • Blog

Deteksi Outlier dengan IQR Method

  • August 6, 2026
  • oleh Edusoft Center

Deteksi Outlier dengan IQR Method

Waktu lagi eksplorasi data (EDA), kita sering nemuin data yang “aneh” alias beda banget dari mayoritas data lainnya. Data kayak gini disebut outlier. Nah, salah satu cara paling populer buat nemuin outlier secara numerik (bukan cuma lihat-lihat dari chart) adalah pakai IQR Method atau Interquartile Range Method.

Beda sama boxplot yang sifatnya visual, IQR Method ini kasih kita angka pasti: batas bawah dan batas atas data yang dianggap “normal”. Di luar batas itu, otomatis dicap sebagai outlier.

💡 Emang Kenapa Sih Perlu IQR Method?

  • Kasih angka pasti, bukan cuma perkiraan visual dari chart.
  • Gampang diotomatisasi lewat kode, cocok buat data yang besar.
  • Bisa jadi dasar buat filter atau bersihin data sebelum modeling.
  • Nggak kepengaruh sama nilai ekstrem, beda sama rata-rata (mean).
  • Salah satu teknik wajib pas tahap Data Cleaning & EDA.

Emang IQR Method Bisa Ngapain Aja?

IQR Method bukan cuma buat itung-itungan doang, tapi beneran bantu proses analisis, di antaranya:

  • Nentuin rentang data yang dianggap “normal” secara statistik.
  • Nemuin data ekstrem tinggi maupun ekstrem rendah sekaligus.
  • Jadi dasar buat bikin keputusan: data ini dibuang, diperbaiki, atau dibiarin.
  • Ngasih angka objektif yang bisa dipakai berulang kali di dataset lain.
  • Sering dipasangin sama boxplot buat validasi visual.

IQR Method ini sering banget dipakai diam-diam di balik proses analisis berikut:

  • Bersihin data sebelum training model machine learning
  • Analisis gaji karyawan yang kelewat tinggi/rendah
  • Deteksi transaksi mencurigakan (fraud detection)
  • Quality control di data sensor/produksi pabrik
  • Riset kesehatan (misal: nemuin hasil lab pasien yang nggak wajar)

Enaknya Pakai IQR Method

  • Rumusnya simpel, cukup pakai Q1, Q3, dan IQR.
  • Nggak sensitif sama nilai ekstrem kayak mean/standar deviasi.
  • Bisa diterapin ke banyak kolom numerik sekaligus lewat perulangan.
  • Hasilnya berupa angka pasti, gampang dijadiin syarat filter data.

Tapi Ya, IQR Method Juga Ada Minusnya

  • Kurang cocok buat data yang distribusinya udah aneh dari awal (skewed banget).
  • Batas 1.5 x IQR itu cuma konvensi umum, bukan aturan mutlak.
  • Nggak ngasih tau “kenapa” data itu outlier, cuma nunjukin “mana” yang outlier.

Kenalan Yuk sama Komponen IQR Method

Sebelum praktik, penting banget paham dulu tiap komponen dari rumus IQR ini artinya apa:

KomponenArtinya
Q1 (Kuartil 1)Nilai di mana 25% data ada di bawahnya
Q3 (Kuartil 3)Nilai di mana 75% data ada di bawahnya
IQR (Interquartile Range)Selisih antara Q3 dan Q1 (Q3 – Q1)
Batas BawahQ1 – (1.5 x IQR), di bawah ini dianggap outlier
Batas AtasQ3 + (1.5 x IQR), di atas ini dianggap outlier

1. Siapin Tools-nya Dulu

Buat ngitung IQR di Python, kita cuma butuh dua library utama: pandas buat handle datanya, dan numpy buat bantu perhitungan angka. Kalau kamu pakai Google Colab, dua-duanya udah otomatis ke-install, jadi tinggal import aja.

Import Library

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

2. Siapin Dataset-nya

Biar praktiknya gampang dan bisa langsung dicoba tanpa upload file, kita bikin dummy dataset dulu. Anggap aja ini data gaji karyawan (dalam juta rupiah), lengkap sama beberapa data ekstrem yang udah disengaja biar keliatan hasil deteksinya.

np.random.seed(42)

gaji_normal = np.random.normal(loc=8, scale=2, size=95)
gaji_outlier = [25, 28, 0.5, 30, 1]

gaji = np.concatenate([gaji_normal, gaji_outlier])
np.random.shuffle(gaji)

df = pd.DataFrame({
    "Karyawan_ID": range(1, len(gaji)+1),
    "Gaji_Juta": np.round(gaji, 2)
})

df.head()

Pastiin kolom yang mau dianalisis itu bertipe numerik, misalnya kolom Gaji_Juta di atas.


3. Hitung Q1, Q3, dan IQR

Nah, ini bagian intinya. Kita hitung dulu Q1 dan Q3 pakai fungsi .quantile() dari pandas, terus cari selisihnya buat dapetin IQR.

Bentuk Dasarnya

Q1 = df["Gaji_Juta"].quantile(0.25)
Q3 = df["Gaji_Juta"].quantile(0.75)
IQR = Q3 - Q1

print("Q1  :", Q1)
print("Q3  :", Q3)
print("IQR :", IQR)

Biar makin ngerti:

  • .quantile(0.25) ngasih nilai di titik 25% data (Q1).
  • .quantile(0.75) ngasih nilai di titik 75% data (Q3).
  • IQR = Q3 – Q1 nunjukin rentang sebaran 50% data di tengah.

4. Tentukan Batas Bawah dan Batas Atas

Setelah dapet nilai IQR, kita bisa tentuin batas normal data pakai rumus 1.5 x IQR. Data yang jatuh di luar batas ini otomatis dianggap outlier.

batas_bawah = Q1 - 1.5 * IQR
batas_atas  = Q3 + 1.5 * IQR

print("Batas Bawah :", batas_bawah)
print("Batas Atas  :", batas_atas)

Yuk Coba Langsung

import pandas as pd
import numpy as np

np.random.seed(42)
gaji_normal = np.random.normal(loc=8, scale=2, size=95)
gaji_outlier = [25, 28, 0.5, 30, 1]
gaji = np.concatenate([gaji_normal, gaji_outlier])
np.random.shuffle(gaji)

df = pd.DataFrame({
    "Karyawan_ID": range(1, len(gaji)+1),
    "Gaji_Juta": np.round(gaji, 2)
})

Q1 = df["Gaji_Juta"].quantile(0.25)
Q3 = df["Gaji_Juta"].quantile(0.75)
IQR = Q3 - Q1

batas_bawah = Q1 - 1.5 * IQR
batas_atas  = Q3 + 1.5 * IQR

print(batas_bawah, batas_atas)

Kalau kode ini dijalanin, kita bakal dapet dua angka: batas bawah dan batas atas. Di luar dua angka ini, data dianggap outlier.

output Q1, Q3, IQR, batas bawah dan batas atas

5. Filter dan Tampilkan Outlier

Sekarang kita tinggal filter data mana aja yang jatuh di luar batas normal itu.

Bentuk Dasarnya

outliers = df[(df["Gaji_Juta"] < batas_bawah) | (df["Gaji_Juta"] > batas_atas)]
data_bersih = df[(df["Gaji_Juta"] >= batas_bawah) & (df["Gaji_Juta"] <= batas_atas)]

print("Jumlah outlier:", len(outliers))
outliers.sort_values(by="Gaji_Juta", ascending=False)

Kolom outliers isinya baris-baris data yang dianggap nyimpang, sedangkan data_bersih isinya data yang masih di rentang normal.

tabel outlier hasil filter

6. Validasi Pakai Boxplot

Biar makin yakin, hasil dari IQR Method ini biasanya divalidasi lagi pakai boxplot. Kalau angka batas bawah/atas kita bener, titik-titik outlier di boxplot harusnya sejalan sama data yang ke-filter tadi.

plt.figure(figsize=(8,5))
sns.boxplot(x=df["Gaji_Juta"], color="skyblue")
plt.title("Boxplot Deteksi Outlier - Gaji Karyawan (Juta Rupiah)")
plt.xlabel("Gaji (Juta Rupiah)")
plt.show()
boxplot deteksi outlier gaji karyawan
plt.figure(figsize=(8,5))
sns.histplot(df["Gaji_Juta"], bins=20, kde=True, color="steelblue")
plt.axvline(batas_bawah, color="red", linestyle="--", label="Batas Bawah")
plt.axvline(batas_atas, color="red", linestyle="--", label="Batas Atas")
plt.title("Distribusi Gaji Karyawan dengan Batas IQR")
plt.xlabel("Gaji (Juta Rupiah)")
plt.legend()
plt.show()
histogram distribusi gaji karyawan dengan batas IQR

7. Cara Baca Hasil IQR Method

Setelah dapet semua angka dan chart-nya, begini cara bacanya:

  • Kalau IQR-nya kecil → data mayoritas ngumpul rapat di tengah.
  • Kalau IQR-nya besar → data mayoritas cukup tersebar/bervariasi.
  • Semakin banyak data di luar batas bawah/atas → makin banyak juga outlier yang perlu dicek.
  • Outlier nggak selalu berarti data salah, bisa juga itu memang kondisi nyata (misal gaji direktur yang emang tinggi).
ringkasan insight jumlah outlier

Biar Nggak Lupa, Ini Rangkumannya

FungsiKegunaanContoh
.quantile(0.25)Menghitung nilai Kuartil 1 (Q1).df["gaji"].quantile(0.25)
.quantile(0.75)Menghitung nilai Kuartil 3 (Q3).df["gaji"].quantile(0.75)
Q3 - Q1Menghitung IQR (Interquartile Range).IQR = Q3 - Q1
Q1 - 1.5*IQR / Q3 + 1.5*IQRMenentukan batas bawah dan batas atas data normal.batas_atas = Q3 + 1.5*IQR

Kalau Digabung, Alurnya Kayak Gini

📄 Load / Buat Data (pandas) ⬇ 📦 Pilih Kolom Numerik ⬇ 📐 Hitung Q1, Q3, IQR ⬇ 🚧 Tentukan Batas Bawah & Atas ⬇ 🔍 Filter Data Outlier ⬇ ✅ Validasi dengan Boxplot & Insight

📝 Catatan Dikit

Angka 1.5 pada rumus batas IQR itu konvensi yang paling umum dipakai, tapi bukan aturan mutlak. Di beberapa kasus (misal deteksi outlier yang lebih ketat), angka ini bisa diganti jadi 3 biar cuma nangkep outlier yang ekstrem banget.

Abis Ini Belajar Apa Lagi?

🚀 Kalau udah pede sama IQR Method, lanjut aja ke materi-materi ini:

  • Boxplot (versi visual dari IQR Method)
  • Z-Score Method buat deteksi outlier
  • Data Cleaning & Handling Missing Values
  • Bar Chart untuk Perbandingan Antar Kategori
  • Heatmap Korelasi dengan Seaborn

Materi-materi ini lanjutan dari dasar yang udah kamu pelajarin, dan sering banget dipakai bareng-bareng pas tahap Exploratory Data Analysis (EDA).

Penutup

IQR Method itu salah satu teknik paling simpel tapi powerful buat nemuin outlier secara numerik. Cuma dengan ngitung Q1, Q3, dan IQR, kita udah bisa dapet batas pasti mana data yang normal dan mana yang menyimpang.

Kalau kamu baru mulai belajar EDA, IQR Method ini cocok banget jadi pelengkap boxplot sebelum lanjut ke teknik deteksi outlier lain yang lebih kompleks.

🎉 Keren!

Sekarang kamu udah paham dasar-dasar IQR Method, mulai dari ngitung Q1-Q3-IQR, nentuin batas normal, filter outlier, sampai validasi hasilnya pakai boxplot. Ini modal penting sebelum lanjut ke teknik deteksi outlier dan data cleaning yang lebih rumit.

Tags: dataAnalystpandas
Previous Post
Next Post

Post comment

Cancel reply

Your email address will not be published. Required fields are marked *

Recent Posts

  • Heatmap Korelasi dengan Seaborn
  • Tutorial Membersihkan dan Menstandarkan Data String di Pandas
  • Deteksi Outlier dengan IQR Method
  • Cara Menulis Insight dari EDA: Dari Angka ke Kalimat Bisnis
  • Standarisasi Data: Mengapa Konsistensi Menjadi Kunci Kualitas Informasi di Era Digital

Arsip

  • August 2026
  • July 2026
  • June 2026
  • April 2026
  • March 2026
  • February 2026
  • January 2026
  • September 2025
  • August 2025
  • July 2025
  • March 2019
  • February 2019
  • January 2019
  • December 2018
  • November 2018
  • October 2018
  • September 2018
  • August 2018
  • July 2018
  • June 2018
  • May 2018
  • April 2018
  • March 2018
  • February 2018
  • January 2018
  • December 2017
  • November 2017
  • October 2017
  • September 2017
  • August 2017
  • July 2017
  • June 2017
  • May 2017
  • April 2017
  • March 2017
  • February 2017
  • January 2017
  • December 2016
  • November 2016
  • October 2016
  • September 2016
  • August 2016
  • July 2016
  • June 2016
  • May 2016
  • April 2016
  • March 2016
  • February 2016
  • January 2016
  • December 2015
  • November 2015
  • October 2015
  • September 2015
  • August 2015
  • July 2015
  • June 2015
  • May 2015
  • April 2015
  • March 2015
  • February 2015
  • January 2015
  • December 2014
  • November 2014
  • October 2014
  • September 2014
  • August 2014
  • July 2014
  • June 2014
  • May 2014
  • April 2014
  • March 2014
  • February 2014
  • January 2014
  • December 2013
  • November 2013
  • October 2013
  • September 2013
  • August 2013
  • July 2013
  • June 2013
  • May 2013
  • April 2013
  • March 2013
  • February 2013
  • January 2013
  • December 2012
  • November 2012
  • October 2012
  • September 2012
  • August 2012
  • July 2012
  • June 2012
  • May 2012
  • April 2012
  • December 2011
  • November 2011

Tags

#EdusoftCenter apache web server dns server kursus android kursus database kursus dns dan web server kursus dns server kursus ethical hacking kursus hacking kursus jaringan kursus jaringan linux Kursus Komputer kursus komputer di solo kursus komputer di solo / surakarta kursus komputer di surakarta kursus linux Kursus Linux Forensics kursus linux networking kursus linux security kursus linux server kursus mikrotik kursus networking kursus network security kursus php Kursus PHP dan MySQL kursus php mysql kursus proxy kursus security kursus ubuntu kursus ubuntu server kursus web kursus web security kursus web server kursus wordpress kursus wordpress theme linux MySQL pelatihan komputer di solo PHP security training komputer training komputer di solo tutorial php ubuntu wordpress

© Edusoft Center - Kursus Komputer di Solo | 2010 - 2025 | Privacy Policy | Site Map

All Right Reserved

WhatsApp us