Data yang tidak lengkap (missing values) adalah masalah yang hampir selalu muncul di dunia nyata — entah karena sensor error, responden yang tidak menjawab survei, kegagalan sistem saat pencatatan, atau proses penggabungan data dari berbagai sumber. Sebelum data bisa dipakai untuk analisis atau machine learning, missing values ini harus ditangani dengan tepat.
Ada dua pendekatan utama: Drop (menghapus data yang hilang) dan Fill/Imputation (mengisi data yang hilang). Artikel ini membahas kapan masing-masing teknik cocok dipakai, disertai tutorial Python yang bisa langsung kamu praktikkan beserta screenshot hasilnya.
1. Kenapa Missing Values Harus Ditangani?
Sebagian besar algoritma machine learning (seperti scikit-learn) tidak bisa memproses nilai NaN secara langsung. Selain itu, missing values yang tidak ditangani dengan baik bisa:
- Membuat statistik deskriptif (rata-rata, korelasi, dsb) menjadi bias
- Menyebabkan error saat training model
- Mengurangi akurasi prediksi jika ditangani secara sembarangan
2. Jenis-Jenis Missing Values
Sebelum memilih teknik, penting mengenali tipe missing data karena ini memengaruhi pendekatan yang tepat:
| Tipe | Penjelasan | Contoh |
|---|---|---|
| MCAR (Missing Completely at Random) | Hilangnya data murni acak, tidak berhubungan dengan variabel lain | Sensor mati sesaat karena gangguan listrik |
| MAR (Missing at Random) | Hilangnya data berhubungan dengan variabel lain yang diketahui | Orang dengan penghasilan tinggi cenderung tidak mengisi kolom gaji |
| MNAR (Missing Not at Random) | Hilangnya data berhubungan dengan nilai itu sendiri | Orang dengan nilai ujian rendah sengaja tidak melapor |
Mengetahui jenis ini membantu menentukan apakah drop aman dilakukan atau berisiko menghilangkan pola penting.
3. Teknik Drop (Menghapus)
Kapan digunakan
- Proporsi missing values sangat kecil (biasanya < 5% dari total data)
- Data hilang bersifat MCAR (benar-benar acak)
- Jumlah data cukup besar sehingga kehilangan beberapa baris tidak signifikan
Kelebihan
- Sederhana dan cepat
- Tidak menambahkan bias dari asumsi nilai pengganti
Kekurangan
- Bisa menghilangkan informasi berharga jika data yang di-drop cukup banyak
- Berisiko bias jika data hilang tidak acak (MAR/MNAR)
- Mengurangi ukuran sampel, yang berdampak pada kekuatan statistik
4. Teknik Fill / Imputation (Mengisi)
Kapan digunakan
- Proporsi missing values cukup besar sehingga drop akan menghilangkan terlalu banyak data
- Data penting untuk dipertahankan (misalnya dataset kecil)
- Ada pola yang bisa dimanfaatkan untuk estimasi nilai (misalnya time series)
Metode umum
| Metode | Cocok untuk | Contoh |
|---|---|---|
| Mean/Median | Data numerik, distribusi simetris/skewed | Usia, gaji |
| Mode | Data kategorikal | Jenis kelamin, kota |
| Forward/Backward Fill | Data time series | Data saham harian |
| Interpolasi | Data numerik berurutan/time series | Suhu per jam |
| KNN Imputer / Model-based | Dataset kompleks dengan banyak fitur berkorelasi | Dataset medis |
Kelebihan
- Mempertahankan ukuran data
- Bisa memanfaatkan pola dari data lain untuk estimasi yang masuk akal
Kekurangan
- Bisa memasukkan bias jika metode pengisian tidak sesuai
- Menambah kompleksitas, terutama untuk metode berbasis model
- Nilai imputasi bukan nilai asli, sehingga variansi data bisa berkurang (under-representasi ketidakpastian)
5. Tabel Perbandingan Singkat
| Aspek | Drop | Fill |
|---|---|---|
| Kompleksitas | Rendah | Sedang–Tinggi |
| Risiko bias | Tinggi jika data tidak MCAR | Tergantung metode |
| Ukuran data | Berkurang | Tetap |
| Cocok untuk missing besar | Tidak | Ya |
| Cocok untuk missing kecil | Ya | Bisa, tapi kurang perlu |
6. Berikut file data yang bisa di praktekan dan tahapan awal
Disini kita akan memulai praktek langsung sihlakan download file ini :
Jika sudah kalian perlu mengubahnya menjadi format csv karena file ini masih dengan format xls, kenapa harus csv? disini csv lebih ringan dan lebih cepat dibaca dari pada xls dan csv adalah standar umum untuk dunia data science
Pertama sebelum mengikuti step – stepnya kamu perlu export filenya dulu dengan perintah ini :
from google.colab import files
uploaded = files.upload()Masukan file tadi dan nanti hasilnya seperti ini :

Disini saya pakai google collab untuk membuat tutorialnya karena sangat bersahabat dengan pengguna kamu tidak perlu menginstall apa apa lagi karena sudah ada langsung jika kamu masuk ke webnya, ini linknya :
https://colab.research.google.com
Ubah format dari xls ke csv dan cek hasilnya pakai code ini :
df = pd.read_excel("data_praktik_missing_values.xls")
df.to_csv("data.csv", index=False)
print(df.head())
print(df.isnull().sum())Nanti hasilnya akan seperti ini :

Sekarang kita bisa masuk ke step by stepnya !
Step 1 – Cek Persentase Missing Values dan jumlah missing values per kolom
print("Jumlah missing values per kolom:")
print(df.isnull().sum())
print("\nPersentase missing values per kolom:")
print((df.isnull().sum() / len(df)) * 100)Nanti hasilnya seperti ini :

Step 2 — Teknik Drop
# Drop baris yang punya minimal 1 missing value
df_drop_row = df.dropna()
print("Jumlah baris sebelum drop:", len(df))
print("Jumlah baris sesudah drop:", len(df_drop_row))
# Drop kolom yang ada missing value-nya
df_drop_col = df.dropna(axis=1)
print("\nKolom yang tersisa setelah drop kolom:")
print(df_drop_col.columns.tolist())Jika Sudah ini hasilnya !

Ini langkah penting sebelum memutuskan drop atau fill — lihat dulu seberapa parah data yang hilang.
Mau Kuasai Teknik Handle Missing Values: Drop vs Fill Sampai Bisa Praktik Langsung?
Materi ini juga kami ajarkan langsung di kelas Edusoft Center, dibimbing mentor, sampai kamu bisa praktik nyata — bukan cuma baca teori.
Tanya Kursus via WhatsApp Lihat contoh project nyata dari siswa kami →
Step 3a — Teknik Fill (Numerik)
df_fill = df.copy()
df_fill['Usia'] = df_fill['Usia'].fillna(df_fill['Usia'].mean())
df_fill['Gaji'] = df_fill['Gaji'].fillna(df_fill['Gaji'].median())Step 3b — Teknik Fill (Kategorikal)
Mengisi Kategorikal dengan mode :
df_fill['Kota'] = df_fill['Kota'].fillna(df_fill['Kota'].mode()[0])ini hasilnya :

Forward fill & backward fill (cocok untuk time series):
df_ffill = df.ffill() # isi dengan nilai sebelumnya
df_bfill = df.bfill() # isi dengan nilai setelahnyaInterpolasi (khusus data numerik berurutan):
df_interp = df.copy()
df_interp['Usia'] = df_interp['Usia'].interpolate()
print(df_interp)
Ini untuk hasil dari kedua code diatas :

Imputasi lebih canggih dengan KNN (scikit-learn):
from sklearn.impute import KNNImputer
df_knn = df[['Usia', 'Gaji']].copy()
imputer = KNNImputer(n_neighbors=2)
df_knn_result = pd.DataFrame(
imputer.fit_transform(df_knn),
columns=['Usia', 'Gaji']
)
print(df_knn_result)
Ini untuk hasilnya :

Step 4 — Verifikasi Hasil
print("Cek apakah masih ada missing values:")
print(df_fill.isnull().sum())
Ini untuk hasilnya :

Selamat kamu telah menyelesaikan tutorial ini dan kamu bisa naik ke level yang lebih tinggi !
7. Cara Memilih: Drop atau Fill?
Gunakan alur pertimbangan berikut sebagai panduan cepat:
- Berapa persen data yang hilang?
- Di bawah ~5% → drop biasanya aman
- Di atas itu → pertimbangkan fill agar tidak kehilangan terlalu banyak data
- Apakah data hilang bersifat acak (MCAR)?
- Ya → drop relatif aman
- Tidak (MAR/MNAR) → fill lebih disarankan agar tidak menimbulkan bias sistematis
- Seberapa penting kolom tersebut?
- Kolom target/label pada supervised learning biasanya lebih baik di-drop barisnya daripada diisi
- Kolom fitur pendukung sering lebih aman untuk diisi
- Apakah datanya time series?
- Jika ya, forward/backward fill atau interpolasi sering jadi pilihan terbaik
8. Kesimpulan
Tidak ada teknik yang selalu benar untuk semua kasus — keputusan drop vs fill bergantung pada seberapa banyak data yang hilang, pola kehilangannya, dan seberapa krusial data tersebut untuk analisis atau model yang dibangun. Praktik terbaik: selalu cek dan pahami dulu karakteristik missing values sebelum memutuskan tekniknya, lalu evaluasi dampaknya terhadap hasil akhir (misalnya performa model) setelah penanganan dilakukan.
Coba praktikkan kode di atas dengan datasetmu sendiri, dan bandingkan hasil model/analisis sebelum dan sesudah penanganan missing values untuk melihat dampaknya secara langsung.
Penulis
Junior Alfredo Benerd Setiawan
Portofolio
https://portfolio.edusoftcenter.com/contributors/de59cec4-f113-4667-bea4-7772e56fbc8e
Mau Kuasai Teknik Handle Missing Values: Drop vs Fill Sampai Bisa Praktik Langsung?
Materi ini juga kami ajarkan langsung di kelas Edusoft Center, dibimbing mentor, sampai kamu bisa praktik nyata — bukan cuma baca teori.
Tanya Kursus via WhatsApp Lihat contoh project nyata dari siswa kami →
