Keuntungan:
- Kemampuan membedakan penyebab nilai yang hilang (acak, sistematis, bermakna) dan memilih strategi yang tepat serta menghitung nilai isian dari pelatihan saja
- Kemampuan untuk memeriksa outlier sebelum menghapusnya dan membedakan antara kesalahan data dan kejadian langka yang sebenarnya
- Kemampuan untuk mencegah hilangnya senyap dengan memantau dampak setiap langkah pada jumlah baris/kosong sambil menjaga ketidakkonsistenan jenis dan format ke standar
Sekitar 60-80 persen waktu data scientist dihabiskan untuk pembersihan; Dalam industri, hal ini setengah bercanda disebut "data wrangling" (perselisihan data atau pembersihan data). Karena data dunia nyata hampir tidak pernah siap untuk dianalisis: tanggal dalam format campuran, angka disimpan sebagai teks, beberapa sel kosong, pelanggan muncul tiga kali dalam tabel yang sama dengan dua ejaan berbeda. Dalam unit ini kita akan membahas tiga aspek dasar pembersihan: nilai yang hilang, outlier, dan konversi tipe/format. Kecerdasan buatan adalah asisten yang sangat cepat dalam pekerjaan ini; Namun Andalah yang memutuskan apa yang harus dibersihkan dan bagaimana caranya, karena setiap pilihan pembersihan mengubah analisisnya.
Aturan emas pembersihan: setiap perubahan adalah keputusan
Menghapus sel, mengisi nilai yang hilang dengan mean, memangkas outlier—tidak satu pun dari operasi ini yang “netral”. Masing-masing mengubah data dan mempengaruhi hasilnya. Jadi aturan emas pembersihan: tulis setiap perubahan ke dalam kode, catat alasannya, jangan pernah menimpa data asli. AI memberi Anda kode pembersihan cepat, tetapi Anda bertanggung jawab untuk memahami apa yang dilakukan kode tersebut; Jangan menjalankannya tanpa melihat berapa banyak baris yang hilang saat Anda mengatakan "hapus baris kosong".
Perhatian: Jangan pernah mengubah data mentah asli. Tulis versi yang sudah dibersihkan ke file/tabel terpisah. Dengan cara ini, jika Anda menemukan kesalahan, Anda dapat kembali ke titik awal dan mempertahankan reproduktifitas.
Nilai yang hilang: mengapa kosong, apa yang harus dilakukan
Nilai yang hilang (biasanya muncul sebagai NaN — "Bukan Angka" di panda) adalah saat sel kosong. Namun penyebab kesenjangan menentukan solusinya. Ada tiga situasi umum. Hilang secara acak: sensor tidak berfungsi sesaat; Mungkin masuk akal untuk mengisinya. Hilang secara sistematis: kolom formulir hanya diminta untuk pelanggan tertentu; Kesenjangan di sini sebenarnya adalah informasi. Hilang secara signifikan: jika "tanggal pengembalian" kosong, pelanggan tidak melakukan pengembalian; Spasi ini artinya 0 atau “tidak ada”, tidak terisi.
Strategi utama:
Strategi
Kapan waktu yang tepat?
risiko
Hapus baris
Tingkat kehilangan sangat rendah (<5%) dan acak
Hilangnya data dan representasi
Hapus kolom
Sebagian besar kolom kosong (>60%)
hilangnya informasi
Isi rata-rata/median
Numerik, hilang secara acak
Ini mengurangi varians dan mendistorsi distribusi
Kategori "tidak diketahui"
Hilang secara kategoris dan sistematis
Menghasilkan kategori tambahan
Prediksi dengan model
Kolom yang rumit dan berharga
Risiko kebocoran, kompleksitas
Poin kritis: nilai imputasi harus dihitung hanya dari data pelatihan dan nilai yang sama harus diterapkan pada data pengujian. Jika Anda memasukkan rata-rata data pengujian, Anda menciptakan kebocoran (Unit 10). Median (nilai tengah dari data ordinal) sering kali lebih disukai daripada mean karena lebih kuat terhadap outlier dibandingkan mean.
Pencilan: kesalahan atau nyata?
Pencilan dapat berupa salah satu dari dua hal: kesalahan data (999 di kolom usia) atau peristiwa nyata namun jarang terjadi (pesanan pelanggan senilai $2 juta). Membingungkan keduanya adalah bencana: menghapus outlier yang sebenarnya dan Anda membuang informasi penting; Jika Anda membiarkan kesalahan, rata-rata Anda akan menurun. Oleh karena itu, outlier perlu diperiksa terlebih dahulu, bukan dihapus secara otomatis.
Metode pendeteksian yang umum: Metode IQR (rentang interkuartil; nilai yang lebih dari 1,5 kali selisih antara kuintil 25% dan 75% data dianggap outlier) dan skor-z (jumlah deviasi standar yang jauh dari rata-rata suatu nilai; biasanya merupakan outlier jika lebih besar dari 3). AI menulis kode untuk perhitungan ini dalam hitungan detik; Namun sebelum Anda mengatakan "hapus", periksa apa nilainya.
Konversi jenis dan format: sumber kesalahan senyap
Salah satu yang paling memusingkan adalah kebingungan tipe data. Jika kolom "jumlah" disimpan sebagai teks, Anda tidak dapat menambahkan; Program ini salah membaca nomor berformat Turki seperti "1,250.50" dan bukannya "seribu dua ratus lima puluh". Tanggal ("01/03/2024" hari-bulan atau bulan-hari?), kategori ("Pria"/"pria"/"M" adalah hal yang sama?) dan unit (TL atau kuruş?) secara diam-diam menghasilkan hasil yang salah. Bagian penting dari pembersihan ini adalah memasukkan ketidakkonsistenan ini ke dalam standar: tanggal ke dalam satu format, kategori ke dalam satu ejaan, angka ke dalam satu unit.
tiga kasus mini
Kasus 1 — Jebakan rata-rata. Sebuah tim mengisi 320 nilai yang hilang di kolom pendapatan dengan rata-rata ($48,500). Namun kekurangannya bersifat sistematis: mereka adalah segmen berpendapatan rendah yang tidak pernah menyatakan pendapatannya. Pengisian rata-rata membuat kelompok ini kaya secara artifisial dan model kreditnya salah. Pelajaran: tanyakan “mengapa kosong” sebelum mengisinya.
Kasus 2 — Pencilan yang tidak boleh dihapus. Seorang analis ritel menghapus 4 pesanan besar (masing-masing TL 1,8 juta) dalam data penjualan, mengira itu adalah "kesalahan". Namun, ini adalah pesanan perusahaan nyata dan menyumbang 22% dari total omset. Model perkiraan pasca-penghapusan sama sekali tidak memenuhi permintaan institusional. Pelajaran: periksa outlier sebelum menghapusnya.
Kasus 3 — Bencana format tanggal. Dalam CSV, tanggal dicampur menjadi "01-03-2024" dan "03-01-2024". Ketika kode yang ditulis oleh YZ diurai sesuai dengan format pertama, 6.400 baris menjadi NaT sebagai "tanggal tidak valid" dan diam-diam dikeluarkan dari analisis. Analis hanya memperhatikan hal ini ketika jumlah garis berkurang. Pelajaran: selalu periksa jumlah baris dan kosong setelah konversi.
Empat templat yang dapat disalin
1) Peta nilai hilang:
Saya punya panda df. Tulis kode yang menghasilkan tabel yang menunjukkan jumlah dan persentase yang hilang (NaN) untuk setiap kolom. Kemudian, cantumkan secara terpisah kolom-kolom yang tingkat kehilangannya melebihi 40% dan kolom-kolom yang tingkat kehilangannya di bawah 5%. Buat saja kode diagnosis ini, bukan strategi apa yang Anda sarankan; Saya akan membuat keputusan.
2) Inspeksi outlier (bukan penghapusan):
Tulis kode yang MENDETEKSI (bukan menghapus!) outlier untuk kolom "jumlah" saya menggunakan metode IQR. Letakkan baris terluar di df terpisah sehingga saya dapat memeriksanya secara manual. Cetak juga jumlah outlier dan bagiannya dalam total.
3) Standardisasi jenis/format:
Tulis kode yang menstandardisasi kolom berikut:- "tanggal": dapat dalam format campuran ("01-03-2024" dan "03-01-2024"); ubah semuanya menjadi datetime, hitung yang tidak dapat diterjemahkan dan laporkan (buang secara diam-diam). - "gender": "Pria"/"pria"/"M" -> "M", "Wanita"/"wanita"/"F" -> "K". - "jumlah": Teks berformat Turki ("1.250,50") -> angka desimal. Cetak berapa banyak baris yang terpengaruh setelah setiap konversi.
4) Periksa sebelum/sesudah pembersihan:
Tulis kode yang membandingkan df.shape, jumlah yang hilang, dan statistik ringkasan (rata-rata, median, min, maks) kolom yang dipilih sebelum dan sesudah langkah pembersihan. Tujuan: untuk melihat perubahan pembersihan apa.
Perintah lemah / Perintah kuat
Perintah yang lemah:
Hapus data ini.
"Jelas" bersifat ambigu; AI tidak mengetahui bagian mana yang hilang yang harus dihapus, diisi apa, kolom mana yang harus diproses dan bagaimana caranya. Hasilnya: perubahan yang buta dan tidak dapat diubah.
Perintah yang kuat:
Peran Anda: asisten pembersihan data. kolom df: id_pelanggan (int), tanggal_pendaftaran (teks format campuran), pendapatan_tl (teks, "1,200.00"), kota (teks, ejaan tidak konsisten). Aturan: - Mengubah df asli; Kerjakan salinan bernama df_clean.- Ubah income_tl menjadi angka, hitung apa yang tidak dapat diterjemahkan.- Ubah record_date menjadi datetime, laporkan kesalahannya.- Jangan hapus baris apa pun tanpa persetujuan saya; Tunjukkan kandidat secara terpisah. Setelah setiap langkah, cetak df_temiz.shape dan nomor yang hilang.
Di sini sumber dilindungi, setiap transformasi dihitung, penghapusan diserahkan kepada manusia.
Kesalahan umum
- Mengisi kekosongan tanpa bertanya "kenapa kosong?" Mengisi data yang hilang secara sistematis/signifikan dengan mean akan mendistorsi data.
- Menghapus outlier tanpa memeriksanya. Membuang kejadian nyata namun jarang terjadi akan menghancurkan informasi penting.
- Menghitung nilai padding dari semua data. Memasukkan data uji akan menimbulkan kebocoran; hitung saja dari pelatihan.
- Tidak memeriksa jumlah baris/kosong setelah konversi. Baris yang merupakan NaT/NaN secara diam-diam dikecualikan dari analisis.
- Menimpa data asli. Pengembalian dan reproduktifitas hilang.
Tip: Jalankan pembersihan dengan perbandingan "sebelum-sesudah". Cetak df.shape, jumlah yang hilang, dan ringkasan statistik kolom penting setelah setiap langkah. Jadi Anda segera melihat bahwa satu langkah secara tak terduga menghancurkan 6.000 baris.
Singkatnya
Pembersihan adalah fase ilmu data yang paling memakan waktu dan membutuhkan keputusan. Setiap perubahan mengubah data, jadi setiap perubahan merupakan keputusan yang disengaja. Untuk nilai yang hilang, tanyakan "mengapa kosong?" Tinjau semua outlier sebelum menghapusnya; Bawa jenis dan format ke standar. Hitung nilai pengisian hanya dari data pelatihan, simpan data asli, dan lacak dampak setiap langkah dengan menghitungnya. AI adalah akselerator yang luar biasa dalam bisnis ini, namun manusialah yang menentukan apa yang Anda bersihkan dan alasannya.
Tugas aplikasi
Ambil (atau buat) sebuah tabel kecil dan dengan sengaja masukkan tiga masalah ke dalamnya: tupel nilai yang hilang, outlier, format tanggal campuran. Minta kode diagnosis dan standardisasi dari AI dengan template di atas; bandingkan jumlah baris dan kosong sebelum/sesudah setiap langkah. Cobalah untuk menangkap setidaknya satu "kehilangan diam-diam" dan perhatikan bagaimana Anda menyadarinya.
daftar periksa
- [ ] Apakah saya menyimpan data mentah asli dan mengerjakan salinannya?
- [ ] Sudahkah saya menanyakan pertanyaan "mengapa kosong" untuk setiap kolom yang hilang?
- [ ] Apakah saya meninjau outlier sebelum menghapusnya?
- [ ] Apakah saya menghitung nilai padding hanya dari data pelatihan?
- [ ] Apakah saya memeriksa jumlah garis/kosong setelah setiap langkah dan menghilangkan silent loss?