Sebelum menutup section ini, kita hadapi satu kenyataan yang tidak nyaman: data di dunia nyata hampir selalu tiba dalam keadaan tidak sempurna. Kasir salah ketik jumlah cangkir, pelanggan mengosongkan kolom rating, nama kota tertulis “Bandung” pada satu baris dan “bandung” pada baris lain, dan aplikasi sesekali mencatat transaksi yang sama dua kali. Analisis di atas data seperti itu tidak gagal berisik — analisis tersebut justru berjalan lancar dan menghasilkan angka yang salah dengan percaya diri. Chapter penutup ini memperkenalkan enam dimensi kualitas data sebagai kerangka memeriksa dataset, lalu mempraktikkannya pada satu tabel kecil yang sengaja kita kotori.

Mengapa Kualitas Data Menentukan Hasil #

Setiap rumus dan model di Course ini memakai asumsi yang sama: nilai yang masuk adalah nilai yang benar. mean(), merge(), sampai model machine learning tidak memiliki cara untuk membedakan angka benar dari angka keliru — semuanya diproses setara. Akibatnya kualitas data membatasi mutu hasil secara diam-diam: laporan rata-rata penjualan bisa membengkak dua kali lipat hanya karena satu baris tercatat ganda, dan keputusan stok yang diambil dari laporan tersebut salah arah tanpa pesan galat apa pun. Prinsip kerjanya sederhana: periksa kualitas sebelum menghitung, bukan setelah hasilnya mencurigakan.

Enam Dimensi Kualitas Data #

Kerangka yang paling umum dipakai menilai kualitas data memuat enam dimensi. Setiap dimensi punya bentuk pelanggaran khas dan dampak khas pada analisis:

DimensiPertanyaan kunciContoh pelanggaranDampak pada analisis
AkurasiApakah nilai sesuai kenyataan?harga kopi susu tercatat 2400 padahal 24000seluruh hitungan pendapatan melenceng
KelengkapanApakah semua yang perlu ada?kolom rating kosong pada 30% ulasanrata-rata kepuasan hanya mewakili sebagian pelanggan
KonsistensiApakah nilai terekam dengan cara yang sama?“Bandung” vs “bandung” pada kolom kotaagregasi per kota terpecah menjadi dua kelompok semu
Ketepatan waktuApakah data mutakhir saat dipakai?laporan stok kemarin dipakai untuk pesanan hari inirekomendasi belanja bahan baku meleset
KeunikanApakah setiap observasi tercatat sekali?transaksi T002 tersimpan dua kalifrekuensi dan rata-rata terdorong naik
ValiditasApakah nilai mematuhi aturan bentuknya?jumlah cangkir bernilai 400 atau -2statistik terdistorsi oleh nilai mustahil

Perhatikan bahwa keenam dimensi tidak berdiri sendiri. Data yang akurat tetapi tidak tepat waktu menyesatkan keputusan operasional; data yang lengkap tetapi tidak unik menggelembungkan angka; data yang konsisten secara penulisan tetap bisa tidak valid isinya. Pemeriksaan yang sehat memeriksa dimensi demi dimensi, bukan hanya satu yang paling terlihat.

Pemeriksaan Mini dengan pandas #

Mari kita praktikkan empat dimensi yang paling mudah diperiksa secara programatik — keunikan, kelengkapan, validitas, dan konsistensi — pada tabel transaksi kecil yang memuat lima masalah sekaligus:

python
import pandas as pd

df = pd.DataFrame({
    "id_transaksi": ["T001", "T002", "T002", "T004", "T005"],
    "tanggal": ["2026-01-15", "2026-01-15", "2026-01-15", "2026-01-16", "2026-01-16"],
    "produk": ["kopi susu", "teh tawar", "teh tawar", "matcha latte", "kopi susu"],
    "jumlah": [2, 1, 1, None, 400],
    "kota": ["Bandung", "bandung", "bandung", "Surabaya", "Bandung"],
})

print("Keunikan   - baris duplikat:", df.duplicated().sum())
print("Kelengkapan - nilai kosong per kolom:")
print(df.isna().sum().to_string())
print("Validitas  - jumlah di luar rentang 1..50:", ((df["jumlah"] < 1) | (df["jumlah"] > 50)).sum())
print("Konsistensi - variasi penulisan kota:", sorted(df["kota"].unique()))
print()
print("Rata-rata jumlah pada data kotor  :", round(df["jumlah"].mean(), 2))
tandas = df.drop_duplicates()
print("Rata-rata setelah buang duplikat   :", round(tandas["jumlah"].mean(), 2))
wajar = tandas[tandas["jumlah"].between(1, 50)]
print("Rata-rata setelah buang anomali    :", round(wajar["jumlah"].mean(), 2))

Output yang Dihasilkan:

text
Keunikan   - baris duplikat: 1
Kelengkapan - nilai kosong per kolom:
id_transaksi    0
tanggal         0
produk          0
jumlah          1
kota            0
Validitas  - jumlah di luar rentang 1..50: 1
Konsistensi - variasi penulisan kota: ['Bandung', 'Surabaya', 'bandung']

Rata-rata jumlah pada data kotor  : 101.0
Rata-rata setelah buang duplikat   : 134.33
Rata-rata setelah buang anomali    : 1.5

Mari kita telaah pemeriksaan di atas satu per satu:

  1. df.duplicated().sum() menandai baris yang identik dengan baris sebelumnya. Hasil 1 berasal dari transaksi T002 yang tersimpan dua kali — pelanggaran dimensi keunikan.
  2. df.isna().sum() menghitung nilai kosong per kolom. Satu nilai jumlah hilang (transaksi T004) — pelanggaran kelengkapan yang membuat transaksi tersebut tidak terhitung dalam statistik kolom.
  3. Pembandingan (df["jumlah"] < 1) | (df["jumlah"] > 50) menguji validitas terhadap rentang wajar usaha: satu transaksi 400 cangkir jelas di luar nalar operasional. Perhatikan bahwa nilai kosong lolos dari uji ini karena perbandingan dengan NaN menghasilkan False — dua dimensi memang harus diperiksa terpisah.
  4. sorted(df["kota"].unique()) memperlihatkan tiga nilai unik untuk dua kota — “Bandung” dan “bandung” dianggap berbeda oleh mesin meski sama bagi kita. Inilah pelanggaran konsistensi yang paling sering memecah hasil agregasi.
  5. Tiga baris rata-rata menutup dengan bukti dampak: dari 101.0 pada data kotor, naik ke 134.33 setelah duplikat dibuang (satu nilai kecil hilang dari hitungan), lalu jatuh ke 1.5 setelah anomali 400 cangkir disaring. Satu-satunya angka yang layak masuk laporan adalah yang terakhir.

Perhatikan pula langkah between(1, 50): penyaringan ini sekaligus meminggirkan baris ber-jumlah kosong, karena pembandingan dengan nilai kosong bernilai salah. Membersihkan satu dimensi sering ikut menyapu dimensi lain — dan itulah mengapa urutan pemeriksaan perlu dicatat.

Rangkuman #

  • Kualitas data menentukan mutu analisis secara diam-diam; semua alat memproses angka benar dan keliru secara setara.
  • Enam dimensi pemeriksaan: akurasi, kelengkapan, konsistensi, ketepatan waktu, keunikan, dan validitas — masing-masing dengan pelanggaran dan dampak khas.
  • pandas menyediakan pemeriksa cepat: duplicated() untuk keunikan, isna() untuk kelengkapan, pembandingan rentang untuk validitas, dan unique() untuk konsistensi.
  • Satu anomali 400 cangkir menggeser rata-rata dari 1.5 ke 101.0 pada contoh kita — bukti bahwa pemeriksaan kualitas bukan formalitas.

Section Dasar-Dasar Data kini lengkap: kita mengenal apa itu data, jenis dan skalanya, struktur dan formatnya, hingga metadata dan kualitasnya. Satu pertanyaan besar belum tersentuh: dari mana data yang sehat itu kita dapatkan? Jawabannya menjadi pembahasan section berikutnya, Pengumpulan Data , tempat kita membahas sumber data, data primer dan sekunder, hingga pengambilan data dari API dan web.

Referensi #

  1. pandas — Working with Missing Data
  2. pandas — User Guide