TL;DR
Data wrangling adalah proses ngubah data mentah yang berantakan jadi data rapi yang siap dianalisis: mulai dari benerin format, buang duplikat, sampai gabungin sumber. Survei industri berkali-kali nemu porsinya sekitar 60-80% dari waktu kerja seorang data analyst. Cara mangkasnya bukan kerja lebih cepat, tapi bikin langkah pembersihannya jadi skrip yang bisa diulang.
Data wrangling adalah proses ngubah data mentah yang berantakan jadi data rapi yang siap dianalisis: mulai dari benerin format tanggal, buang baris duplikat, sampai gabungin data dari beberapa sumber.
Ini kerjaan yang nggak pernah muncul di portfolio orang, tapi makan porsi paling besar dari hari kerja seorang analis. Survei industri berkali-kali nemu angkanya di kisaran 60-80%.
Aku bahas di sini apa aja yang termasuk data wrangling, kenapa porsinya sebesar itu, dan cara mangkasnya, pakai contoh data UMKM yang beneran berantakan.
Data wrangling adalah semua kerjaan yang kamu lakuin ke data sebelum kamu bisa nanya sesuatu ke data itu. Kalau data kamu masih berupa 12 file Excel dari 6 cabang dengan nama kolom yang beda-beda, kamu belum bisa analisis apa-apa. Kerjaan nyatuinnya. Itu wrangling.
Isinya biasanya lima hal:
Istilah lain yang sering kepakai: data munging, data prep, data cleaning. Beda-beda tipis. Cek juga ETL di glossary buat versi otomatisnya.
Bukan karena kerjaannya susah. Karena kerjaannya nggak pernah selesai.
Empat penyebab utama yang aku lihat di lapangan:
Kasir di cabang Depok ngetik "Depok". Kasir baru di shift malam ngetik "depok". Yang di Bekasi ngetik "Bekasi " pakai spasi di belakang. Buat database, itu tiga cabang berbeda.
Sistem POS ngeluarin tanggal format 2026-05-12. Export dari Excel keluarnya 12/05/2026. Data dari marketplace formatnya 12 Mei 2026. Tiga sumber, tiga format, satu kolom.
"Rp 68.000" itu teks, bukan angka. Begitu juga "1.250" yang di-copy dari PDF. Kamu nggak bisa nge-SUM teks. Ini penyebab nomor satu dari error "invalid input syntax" yang bikin orang stres.
Ini yang paling mahal. Analis bersihin data manual di Excel, bikin report, kirim. Bulan depan data baru datang. Bersihin lagi dari nol. Empat jam, tiap bulan, selamanya.
Tiga penyebab pertama itu masalah data. Penyebab keempat itu masalah proses, dan itu yang paling gampang dibenerin.
Toko Berkah kirim export penjualan Mei 2026: 8.412 baris dari 6 cabang. Sebelum bisa dipakai, ini yang aku temuin waktu discovery.
Query pertama yang selalu aku jalanin di data baru:
SELECT
COUNT(*) AS total_baris,
COUNT(*) - COUNT(tanggal) AS tanggal_kosong,
COUNT(DISTINCT cabang) AS variasi_nama_cabang,
SUM(CASE WHEN qty <= 0 THEN 1 ELSE 0 END) AS qty_aneh
FROM penjualan_mentah;
Hasilnya bikin kaget:
| Yang dicek | Hasil | Harusnya |
|---|---|---|
| Total baris | 8.412 | - |
| Tanggal kosong | 47 | 0 |
| Variasi nama cabang | 19 | 6 |
| Qty nol atau minus | 112 | 0 |
| id_transaksi duplikat | 203 | 0 |
Angka "19 variasi nama cabang" itu yang paling menarik. Cuma ada 6 cabang beneran. Sisanya kombinasi huruf besar-kecil, spasi ekstra, dan typo ("Tanggerang" pakai dua G).
Kalau kamu langsung nge-GROUP BY tanpa sadar ini, laporan kamu bakal nunjukin 19 cabang. Omzet Depok kepecah jadi tiga baris.
Cara ngerapiinnya:
SELECT
TRIM(INITCAP(LOWER(cabang))) AS cabang_bersih,
COUNT(*) AS jumlah_baris
FROM penjualan_mentah
GROUP BY TRIM(INITCAP(LOWER(cabang)))
ORDER BY jumlah_baris DESC;
Ini nyelesain 13 dari 19 variasi. Sisanya typo beneran, dan itu harus dipetain manual sekali, terus disimpan sebagai tabel mapping biar bulan depan nggak ngulang.
Buat duplikat, DISTINCT ON di PostgreSQL nyimpen baris terbaru per transaksi:
SELECT DISTINCT ON (id_transaksi) *
FROM penjualan_mentah
ORDER BY id_transaksi, diinput_pada DESC;
Total waktu bersihin dari nol: sekitar 3 jam. Setelah semua langkahnya jadi satu file SQL, bulan berikutnya cuma 4 menit: jalanin skrip, cek hasilnya masuk akal, selesai.
Itu bedanya wrangling manual sama wrangling yang kecatat.
Tiga langkah, urut dari yang paling berdampak:
Nama cabang harusnya dropdown, bukan kolom teks bebas. Tanggal harusnya date picker. Satu perubahan di form input bisa ngilangin 3 jam pembersihan per bulan, selamanya.
Ini kerjaan yang paling sering dilewatin analis, soalnya rasanya "bukan kerjaan aku". Padahal ini yang paling nghemat waktu kamu sendiri.
Setiap langkah pembersihan yang kamu lakuin manual, tulis sebagai SQL atau Python. Bukan biar keliatan canggih, biar bulan depan kamu nggak ngulang, dan biar orang lain bisa lihat apa yang kamu ubah.
Aturan praktisnya: kalau kamu bakal ngelakuin ini lebih dari dua kali, bikin skrip.
Kalau tiga analis di kantor kamu masing-masing bersihin data yang sama dengan caranya sendiri, kalian bakal punya tiga angka omzet yang beda. Bikin satu tabel bersih hasil wrangling, taruh di database, semua orang ambil dari situ.
Data cleaning itu bagian dari data wrangling: fokusnya benerin nilai yang salah, kosong, atau duplikat. Data wrangling lebih luas: termasuk ngubah bentuk tabel, gabungin sumber, dan bikin kolom turunan. ETL istilah engineering buat pipeline otomatis yang jalan terjadwal. Wrangling biasanya eksploratif dan manual dulu, baru dijadiin ETL kalau kepakai berulang.
Tergantung ukuran data. Di bawah 100 ribu baris, Excel atau Google Sheets plus Power Query masih nyaman. Di atas itu, pakai SQL langsung di database, atau Python dengan pandas. Buat data yang sumbernya banyak dan harus jalan rutin, pakai dbt atau tool ETL. Yang penting bukan tool-nya, tapi langkahnya kecatat dan bisa diulang.
Angkanya bervariasi antara 60-80% tergantung survei dan kematangan data di perusahaan. Yang konsisten: bagian terbesar waktu analis bukan bikin model atau chart, tapi ngerapiin data. Di perusahaan yang data warehouse-nya rapi, angka ini bisa turun ke 30-40%. Di UMKM yang datanya masih di spreadsheet, bisa lebih dari 80%.
Tiga langkah paling berdampak. Satu, benerin di sumbernya, pakai dropdown dan validasi input di form, jangan biarin orang ngetik nama cabang bebas. Dua, jadiin skrip semua langkah pembersihan, jangan klik-klik manual. Tiga, bikin satu tabel bersih yang dipakai bareng-bareng, jangan tiap orang bersihin versinya sendiri.
Iya, dan sering jadi pembeda di interview. Banyak kandidat bisa nulis query di data yang udah rapi. Yang lebih jarang: bisa lihat data mentah berantakan, nyebut masalahnya satu per satu, dan nyusun rencana bersihinnya. Kalau kamu bisa jelasin gimana cara nangani tanggal yang formatnya campur dan nama yang typo, kamu udah di atas rata-rata.
Ringkasannya:
Skill dasarnya SQL. Latihan fungsi pembersih teks di TRIM dan COALESCE, atau baca definisi data cleaning di glossary. Buat referensi fungsi teks yang lengkap, dokumentasi PostgreSQL string functions paling enak dipakai.
Lanjut baca: Belajar SQL Pakai AI dan Pivot Table Google Sheets.
Mau praktek langsung? Mulai latihan SQL gratis
Latihan interaktif, langsung di browser.
Cara pakai pandas rolling buat hitung moving average dan haluskan data time series yang naik-turun. Lengkap dengan contoh penjualan harian UMKM.
Data transaksi harian sering terlalu ramai buat dilihat. Pandas resample ngeringkasnya jadi total per minggu atau per bulan cuma dengan satu baris, asal indeksnya tanggal.
Kolom tanggal yang kebaca sebagai teks bikin sortir dan hitung selisih hari jadi kacau. Ini cara pd.to_datetime ubah teks jadi tanggal asli, plus tangani format berantakan.