# Langkah Pra-pemrosesan Data: Cara Membersihkan Data Bisnis

> Pelajari langkah pra-pemrosesan data yang mengubah catatan bisnis berantakan menjadi wawasan yang andal, lengkap dengan contoh untuk UKM. Lihat bagaimana ELECTE mengotomatiskannya.

Source: https://www.electe.net/id/post/data-preprocessing-steps

Site guide: https://www.electe.net/id/llms.txt

Anda menarik ekspor data penjualan yang tampak sudah rapi. Pesanan, biaya, dan tanggal memenuhi lembar kerja. Lalu sebuah perkiraan sampai di meja kepala keuangan, dan nilai rata-rata pesanan melonjak, padahal tidak ada yang berubah di katalog.

Lonjakan itu sering kali merupakan kesalahan pra-pemrosesan, bukan perubahan perilaku pembeli. Mengisi harga kosong saat faktur duplikat masih ada di dalam file, atau menskalakan seluruh ekstrak sebelum Anda menyisihkan sebagian baris, membuat model mempelajari fakta yang seharusnya belum ia lihat. Kebanyakan tulisan mencantumkan **langkah pra-pemrosesan data** sebagai teknik terpisah yang bisa diterapkan dalam urutan apa pun. Urutanlah yang membuat hasil menjadi menggelembung.

Berikut adalah urutan yang saya rekomendasikan ketika seorang analis menangani file bisnis yang aktif. Anda akan mendapatkan urutan pengerjaan, ambang batas yang saya anggap sebagai titik awal dan bukan aturan mutlak, serta cara mengunci setiap pengaturan hasil pelatihan agar pemuatan data berikutnya mengikuti alur yang sama.

## Tujuh Langkah Pra-pemrosesan Data dengan Urutan yang Tepat

Ekspor penjualan bisa tampak lengkap, tetapi tetap menyembunyikan baris faktur duplikat, biaya satuan yang kosong, dan tanggal yang tersimpan dalam dua format. Jika masalah itu dibersihkan dengan urutan yang salah, setiap rata-rata berikutnya akan mewarisinya.

**Setiap langkah yang mempelajari suatu angka dari data harus dijalankan setelah pemisahan data.** Rata-rata, median, atau rentang penskalaan yang dihitung dari seluruh file membuat baris validasi memengaruhi data pelatihan. Skornya pun tampak lebih baik daripada kinerja model sebenarnya pada pesanan bulan depan.

LangkahYang DilakukanSiap Jika1. Profilkan dan bersihkanPeriksa jumlah baris, tipe data, dan tingkat nilai kosong; hapus duplikat persis; standarkan tanggal dan labelTabel dasar yang bersih dengan satu label untuk setiap kategori2. Pisahkan dataAcak baris, lalu bagi menjadi set pelatihan dan set validasiDua set sudah ada dan belum ada pengaturan hasil pelatihan yang dihitung3. Tangani nilai yang hilangHapus baris, hapus fitur, atau imputasi hanya dengan data pelatihanSetiap kolom terisi lengkap atau bagian kosongnya sudah ditandai4. Lakukan encoding dan rekayasa fiturUbah kategori menjadi angka; buat rasio, komponen waktu, dan rata-rata bergulirTabel fitur siap model dengan kolom yang terdokumentasi5. Tangani outlierVerifikasi nilai ekstrem, lalu batasi, transformasikan, atau tandaiNilai ekstrem sudah dijelaskan, bukan ditebak6. Skalakan fitur numerikLatih scaler pada data pelatihan, lalu terapkan ke data validasiKolom numerik berada pada rentang yang sebanding7. Kunci pipelineSimpan setiap transformasi hasil pelatihan agar data baru mengikuti alur yang samaProses berulang yang berfungsi pada setiap pemuatan data baru

Misalkan sebuah peritel memiliki 12.000 baris pesanan, termasuk 900 baris faktur duplikat. Jika harga yang kosong diimputasi sebelum duplikat itu dihapus, faktur yang sama terhitung dua kali dan rata-rata menyimpang dari daftar harga.

> **Aturan praktis:** Selesaikan dulu baris yang sedang Anda kerjakan sebelum menghitung apa pun yang dibutuhkan baris berikutnya.

Cocokkan file yang sedang Anda buka dengan tujuh baris tersebut. Baris pertama yang belum Anda selesaikan adalah satu-satunya yang layak disentuh hari ini.

## Profiling dan Pembersihan Data Bisnis Mentah

Profiling adalah proses satu jam yang bisa diselesaikan seorang manajer sebelum ada yang membuka model. Biarkan file mentah tetap utuh dan catat setiap perubahan dalam log pembersihan agar kepala keuangan bisa melihat mengapa sebuah total berubah.

1. **Hitung jumlah baris dan kolom, lalu pastikan tipe setiap kolom.** Biaya yang tersimpan sebagai teks tidak bisa dijumlahkan, dan tidak akan memberi peringatan yang jelas. Ubah dulu sebelum Anda memercayai sebuah total.
2. **Hitung tingkat nilai kosong (null) pada setiap kolom.** Kolom dengan lebih dari 30% kosong diproses dengan aturan nilai hilang, bukan diisi sekadarnya. Saya hanya akan menghapus sebuah kolom sepenuhnya jika kekosongannya melebihi 50% dan kolom itu tidak diperlukan untuk keputusan.
3. **Hapus duplikat yang persis sama, bukan yang sekadar mirip.** Cocokkan berdasarkan nomor faktur, tanggal, dan jumlah sekaligus. Pesanan kedua dengan ID baris yang berbeda adalah penjualan nyata. Menghapusnya hanya karena pelanggan dan harinya sama adalah kesalahan yang membuat pendapatan terlihat lebih rendah.
4. **Normalkan format dalam satu kali proses.** Satu pola tanggal, satu mata uang per kolom, dan tanpa spasi liar di dalam kode. Format yang campur aduk memecah satu produk menjadi dua seri dan merusak penggabungan data (join) berikutnya.
5. **Standarkan label kategori.** `UK`, `U.K.`, dan `United Kingdom` adalah satu pasar yang sama. Empat ejaan untuk satu lini produk dalam ekspor e-commerce tiga tahun menimbulkan kerusakan yang sama. Pilih satu label dan petakan sisanya.

Misalkan ekspor itu menyimpan tanggal pesanan sebagai `2024-03-01` pada satu tahun dan `01/03/2024` pada tahun lain. Selama keduanya belum menjadi satu pola, grafik bulanan akan menghitung Maret dua kali atau melewatkannya.

### Apa yang dilindungi oleh log dan pemangkasan data pribadi

Log pembersihan berupa tabel singkat: kolom, aturan, jumlah baris yang diubah, penanggung jawab, tanggal. Ketika tim keuangan bertanya mengapa angka Maret lalu menyusut, Anda cukup menunjuk aturan duplikat, tanpa harus menyusun ulang file dari ingatan.

Sebelum file masuk ke platform analisis mana pun, hapus nama pelanggan, email, dan detail pembayaran. Anda tidak membutuhkannya untuk memprediksi permintaan, dan membiarkannya di dalam ekstrak menimbulkan masalah privasi yang tidak bisa diperbaiki oleh model.

Jika Anda menginginkan pandangan kedua tentang seperti apa data ekstrak komersial yang "baik", [wawasan kualitas data penjualan dari Pipecorn](https://pipecorn.com/blog/data-quality-standards) adalah daftar periksa yang berguna untuk pengenal, kelengkapan, dan konsistensi. Gunakan untuk menentukan kolom mana yang layak dipertahankan, lalu kembali ke pemangkasan tingkat null di atas.

## Pisahkan Data Sebelum Proses Pembelajaran Dimulai

Pemisahan data berfungsi sebagai pagar. Tidak ada proses penghitungan statistik yang boleh dilakukan pada seluruh file.

Untuk klasifikasi teks terawasi, [panduan klasifikasi teks Google](https://developers.google.com/machine-learning/guides/text-classification/step-3) menyarankan pengacakan sebelum pemisahan, karena mempertahankan urutan asli dapat membiaskan kedua set. Setelah diacak, pemisahan yang umum menempatkan **80%** contoh pada data latih dan **20%** pada data validasi. Transformasi yang sama kemudian diterapkan ke kedua set, tetapi hanya setelah dipelajari dari baris data latih.

### Mengapa file penjualan yang terurut menyesatkan

Ekspor sering datang terurut berdasarkan tanggal, wilayah, atau pelanggan. Jika file itu dipisah dari atas ke bawah, Anda melatih model dengan data 2023 sementara memvalidasinya dengan data akhir 2024. Skornya lalu mengikuti kalender, kalender promosi, atau komposisi satu wilayah. Skor itu tidak memberi tahu apakah model memahami pesanan.

Lakukan pengacakan ketika setiap baris adalah kasus yang independen: pesanan yang selesai, akun yang berhenti berlangganan, tiket yang telah diklasifikasi. Jangan acak ketika pertanyaannya adalah peramalan.

> Pertahankan urutan waktu untuk peramalan. Latih pada bulan-bulan awal dan uji pada bulan-bulan berikutnya. Pengacakan akan membuat model melihat masa depan dan menyebutnya kemampuan.

### Kolom teks perlu pemangkasan berdasarkan frekuensi

Tiket dukungan dan deskripsi produk menghasilkan ribuan token. Dalam alur kerja Google yang sama, Anda membuang token yang muncul kurang dari **dua** kali, mempertahankan **20.000** fitur token teratas, dan meranking sisanya dengan skor kepentingan berbasis uji F. Token yang hanya muncul sekali biasanya salah ketik atau SKU sekali pakai, bukan pola yang layak dijadikan kolom.

Setelah pemisahan, bangun setiap pemetaan hanya dari data latih, lalu terapkan pemetaan yang sudah dibekukan itu ke data validasi. Menghitung ulang kosakata atau daftar kategori pada baris data uji adalah cara lain untuk membocorkan jawaban ke dalam persiapan data.

## Isi Nilai yang Hilang Tanpa Membiaskan Hasil

Seberapa sering sebuah kolom kosong, dan apakah keputusan membutuhkan kolom itu, menentukan tindakannya. Rentang di bawah ini hanyalah patokan kerja, bukan hukum. Model risiko yang diatur regulasi mungkin melarang penghapusan baris yang masih bisa dilepas oleh peramalan ritel.

Proporsi Data HilangTingkat Kepentingan FiturTindakanDi bawah 5%Berapa punHapus baris tersebut jika data yang tersisa masih cukup5% hingga 30%RendahHapus fitur5% hingga 30%TinggiImputasi hanya dari baris data latihDi atas 30%TinggiLakukan imputasi, tambahkan kolom penanda data hilang, dan selidiki mengapa kolom tersebut kosongDi atas 30%RendahHapus fitur

Beberapa biaya yang kosong pada file pesanan yang selebihnya lengkap adalah baris pertama. Menghapus baris tersebut lebih kecil dampaknya daripada mengarang harga. Kolom survei yang jarang dipakai pada kisaran tengah tidak layak diisi dengan tebakan, jadi kolomnya dibuang. Masa berlangganan, yang Anda gunakan untuk analisis churn, tetap dipertahankan dan nilainya diestimasi.

[Panduan clustering dari Google tentang persiapan data](https://developers.google.com/machine-learning/clustering/prepare-data) menyebutkan tiga opsi praktis: menghapus contoh yang berisi nilai hilang, menghapus fitur, atau memprediksi nilai yang hilang dari data lain. Data kosong yang jarang terjadi bisa membenarkan penghapusan baris. Data kosong yang sering muncul biasanya berarti Anda menghapus fitur tersebut atau melakukan imputasi.

### Prediksi nilai yang hilang, jangan tempelkan konstanta

Untuk kolom numerik, latih model regresi pada baris yang nilainya ada, lalu estimasi nilai yang kosong. Misalnya, usia pelanggan yang hilang dapat diestimasi dari pendapatan dan masa berlangganan, alih-alih diganti dengan satu rata-rata untuk seluruh perusahaan. Cara ini memanfaatkan hubungan antardata yang sudah Anda percayai.

Nilai pesanan itu miring (skewed). Beberapa transaksi grosir bernilai besar menarik **rata-rata** naik, sehingga pengisian dengan rata-rata membuat keranjang belanja biasa tampak lebih besar daripada kenyataannya. **Median** berada di sekitar pesanan yang umum dan tidak banyak bergeser ketika satu faktur borongan masuk. Bandingkan statistik ringkasan sebelum dan sesudah pengisian. Pergeseran besar berarti metode tersebut mengubah gambaran bisnis, bukan sekadar menambal lubang.

Untuk kategori, beri label `Unknown` pada nilai yang kosong. Kekosongan itu sering kali justru menjadi sinyal: proses checkout yang tidak pernah mencatat wilayah, atau produk tanpa kode pemasok. Mengubahnya menjadi level yang nyata mempertahankan baris tersebut dan menunjukkan kepada model bahwa kolom itu memang kosong.

Data kosong yang sering muncul bukan hal langka dalam operasional. Sebuah studi tahun 2025 tentang data konsumsi air yang tidak lengkap menjelaskan dataset gedung berisi **33.888** catatan per jam dari Februari 2019 hingga Desember 2023, dengan nilai hilang pada **20%** jam, yang berada pada kisaran di mana penghapusan baris secara menyeluruh akan membuang terlalu banyak riwayat ([studi tersebut](https://arxiv.org/html/2506.08882v1)).

Latih imputer hanya pada baris data latih. [Panduan Electe tentang data hilang](https://www.electe.net/post/missing-data-imputation) membahas pilihan imputasi lebih rinci jika Anda ingin meninjau ulang metodenya, bukan urutannya.

## Encoding Kategori dan Rekayasa Fitur yang Berguna

Ada dua pekerjaan di sini. Ubah label menjadi angka yang dapat digunakan model, dan buat kolom yang menjawab pertanyaan bisnis yang tidak terjawab oleh kolom mentah.

### Encoding tanpa peringkat palsu

**One-hot encoding** cocok untuk kategori dengan sedikit nilai, seperti lima wilayah penjualan. Setiap wilayah menjadi kolom ya-atau-tidak tersendiri, dan tidak ada wilayah yang "lebih besar" daripada yang lain.

**Ordinal encoding** cocok untuk urutan yang nyata, seperti ukuran S, M, dan L. Angkanya sesuai dengan peringkat yang sudah digunakan bisnis.

Jangan memberi angka 1, 2, 3 pada nama yang tidak berurutan seperti kanal atau kota. Model akan menganggap kode yang lebih tinggi sebagai lebih banyak dari sesuatu. Peringkat palsu itu kemudian muncul sebagai koefisien yang yakin tetapi keliru. Ketika sebuah kolom memiliki ratusan level, one-hot menghasilkan tabel yang sangat lebar. Kelompokkan level yang jarang muncul ke dalam `Other` sebelum melakukan encoding, dan tentukan pengelompokan itu hanya dari baris data latih.

### Kolom yang menjawab pertanyaan bisnis

Susun daftar singkat yang terkait dengan satu keputusan, bukan tumpukan semua rasio yang bisa Anda tuliskan.

- **Persentase margin:** `(price − cost) / price` menunjukkan apakah sebuah promosi masih menutup biaya, sesuatu yang tidak bisa dijawab oleh pendapatan saja.
- **Jumlah hari sejak pembelian terakhir:** tinjauan churn membutuhkan data kebaruan (recency), bukan salinan ID pelanggan lainnya.
- **Hari dalam seminggu dan bulan:** perencanaan permintaan memperhatikan lonjakan hari Jumat dan bulan-bulan musiman yang tersembunyi di dalam stempel waktu lengkap.
- **Rata-rata bergulir 7 hari:** jumlah unit harian naik turun tidak menentu. Rata-rata mingguan menunjukkan apakah permintaan sedang naik.
- **Rasio stok terhadap penjualan:** manajer inventaris bisa melihat kekurangan stok mulai terbentuk lebih awal dibanding dari jumlah stok mentah.

Saya akan memulai dengan sepuluh sampai lima belas fitur yang terkait dengan satu keputusan tersebut. Hapus salah satu dari sepasang kolom jika korelasinya di atas 0,95, karena kolom kedua hanya mengulang kolom pertama. Tulis arti bisnisnya di samping nama kolom dalam kamus data. Peta encoding atau rata-rata bergulir yang dipelajari dari seluruh file, termasuk baris yang seharusnya dipisahkan untuk pengujian, mengulang kebocoran yang sudah Anda tutup saat pemisahan data.

## Skalakan Angka dan Tangani Outlier

Nilai ekstrem tidak otomatis berarti kesalahan. Pesanan 40 unit dari akun B2B adalah penjualan yang nyata. Beri penanda agar tidak mendominasi rata-rata, dan biarkan tetap ada di riwayat. Harga satuan 100.000 yang seharusnya diketik 1.000 adalah kesalahan input. Perbaiki digitnya, jangan "menanganinya" sebagai permintaan.

### Periksa nilai ekstrem sebelum menghapusnya

Dua pemeriksaan bekerja baik jika digabungkan. Aturan **1,5 × rentang interkuartil** menandai titik yang jauh dari tengah kolom. Pemeriksaan domain menanyakan apakah nilai tersebut mungkin ada: stok negatif, tanggal di dekade mendatang, diskon yang lebih besar dari harga jual. Verifikasi dulu. Setelah itu, batasi pada persentil ke-1 dan ke-99, terapkan transformasi log pada pendapatan yang miring, atau tambahkan penanda dan simpan angka mentahnya untuk pelaporan.

> Pesanan borongan yang Anda hapus adalah pendapatan yang tidak akan pernah Anda perkirakan lagi. Salah ketik yang Anda pertahankan menjadi harga yang menurut model akan dibayar pelanggan.

Jalankan ulang ringkasan setelah pembatasan nilai. Pusat kolom seharusnya nyaris tidak bergeser. Jika median melonjak, berarti batas tersebut bekerja terlalu keras dan Anda perlu memeriksa kembali baris sumbernya.

### Scaler mana yang cocok dengan profil data

Penskalaan mencegah kolom berunit besar, seperti pendapatan tahunan, menenggelamkan kolom berunit kecil, seperti unit per pesanan. [Dokumentasi preprocessing Scikit-learn](https://scikit-learn.org/stable/modules/preprocessing.html) menyebutkan bahwa **StandardScaler** memusatkan setiap fitur pada rata-rata set pelatihan dan menskalakannya berdasarkan varians, dan hasilnya bisa buruk jika terdapat banyak outlier. **RobustScaler** adalah penggantinya yang memakai estimasi pusat dan rentang yang lebih tahan terhadap nilai ekstrem.

Profil DataScalerAlasan KecocokanCukup simetris, sedikit nilai ekstremStandardScalerMemusatkan pada rata-rata dan menskalakan berdasarkan variansBanyak outlier, misalnya pesanan borongan sesekaliRobustScalerMemakai median dan rentang interkuartil, yang tahan terhadap nilai ekstremNilai membutuhkan rentang tetap, misalnya rating 1 sampai 5MinMaxScalerMemetakan nilai ke 0-1 tanpa mengubah bentuk sebarannya

Fit scaler hanya pada data pelatihan, lalu terapkan hasil fit tersebut ke data validasi. Jika scaler difit ulang pada data hold-out, baris validasi yang ekstrem akan ikut menentukan skalanya. Untuk panduan lebih lengkap tentang cara mengenali nilai ekstrem sebelum Anda memilih penanganannya, lihat [panduan ELECTE tentang outlier](https://www.electe.net/post/outlier-statistica).

## Otomatiskan Pipeline dan Periksa Hasilnya

File bersih yang disimpan di satu notebook bisa bergeser antar eksekusi. File baru mungkin mendapat nilai imputasi, encoding kategori, atau skala yang berbeda, sehingga dasbor berubah meskipun bisnis yang mendasarinya tidak berubah.

Pipeline menyatukan imputer, encoder, dan scaler yang sudah di-fit, lalu menerapkan transformasi yang sama pada file baru. Fit langkah-langkah tersebut hanya menggunakan partisi pelatihan. Terapkan pengaturan hasil fit ke data validasi dan pengujian tanpa menghitung ulang. [Catatan IBM tentang kebocoran data](https://www.ibm.com/think/topics/data-leakage-machine-learning) menjelaskan mengapa melakukan fit langkah preprocessing pada data pelatihan dan pengujian sekaligus dapat membocorkan informasi ke dalam evaluasi.

### Pemeriksaan setelah setiap eksekusi

Job yang berhasil hanya memastikan bahwa prosesnya berjalan. Periksa apakah hasilnya masih sesuai dengan sumber dan aturan yang Anda tetapkan:

- **Jumlah baris:** cocokkan file yang dimuat dengan hasil ekspor, dengan memperhitungkan duplikat yang tercatat.
- **Tingkat nilai null per kolom:** selidiki jika terjadi kenaikan mendadak, karena bisa berarti ada kolom sumber yang berhenti masuk.
- **Rentang nilai:** pastikan harga, kuantitas, dan tanggal tetap berada dalam batas yang dapat diterima.
- **Kategori baru:** arahkan wilayah atau SKU yang belum pernah muncul ke kelompok yang telah ditentukan, alih-alih membuangnya tanpa pemberitahuan.

Untuk [contoh praktis validasi data](https://www.electe.net/post/data-validation-techniques), pelajari bagaimana pemeriksaan ini diterapkan pada file bisnis. Anggap hasil otomatis sebagai perkiraan, dan tinjau beberapa siklus pertama secara manual sebelum menggunakannya untuk memicu peringatan.

**ELECTE**, platform analitik data berbasis AI untuk perusahaan yang sedang berkembang, terhubung ke perangkat lunak akuntansi atau file yang diunggah, lalu menjalankan analisis data dan peramalan tanpa memerlukan analis. Pelanggan menghemat lebih dari 10 jam per minggu dengan mengotomatiskan analisis keuangan. Manfaat itu bergantung pada langkah-langkah yang sudah disesuaikan dan bisa Anda pertanggungjawabkan dalam sebuah tinjauan, bukan dihitung ulang pada setiap unggahan.

Minggu ini, ambil satu dataset dan jalankan melalui tabel tujuh baris, lalu tandai langkah mana yang masih manual. Otomatiskan langkah yang berulang, tetapi tetap tinjau keputusan yang membutuhkan penilaian, seperti duplikat versus pemesanan ulang yang sebenarnya atau salah ketik versus pesanan dalam jumlah besar, sampai aturannya stabil.

---

ELECTE menghubungkan data akuntansi atau file unggahan Anda, menyiapkannya, dan mengubahnya menjadi prakiraan dan laporan yang bisa Anda tinjau bersama tim. Jika Anda ingin langkah-langkah prapemrosesan data tersebut diterapkan dengan cara yang sama pada setiap pemuatan, kunjungi [ELECTE](https://www.electe.net) dan lihat bagaimana platform ini menjalankan alurnya pada angka Anda sendiri.
