Keuntungan:
- Keupayaan untuk membezakan punca kehilangan nilai (rawak, sistematik, bermakna) dan memilih strategi yang sesuai dan mengira nilai isian daripada latihan sahaja
- Keupayaan untuk memeriksa outlier sebelum memadamkannya dan membezakan antara ralat data dan peristiwa jarang berlaku sebenar
- Keupayaan untuk mencegah kehilangan senyap dengan memantau kesan setiap langkah pada bilangan baris/kosong sambil membawa jenis dan format tidak konsisten kepada standard
Kira-kira 60-80 peratus daripada masa saintis data pergi ke pembersihan; Dalam industri, ini secara bergurau dipanggil "perbalahan data" (perbalahan data atau pembersihan data). Kerana data dunia sebenar hampir tidak pernah sedia untuk dianalisis: tarikh dalam format bercampur, nombor disimpan sebagai teks, beberapa sel kosong, pelanggan muncul tiga kali dalam jadual yang sama dengan dua ejaan berbeza. Dalam unit ini, kami akan merangkumi tiga aspek asas pembersihan: nilai yang tiada, outlier dan penukaran jenis/format. Kecerdasan buatan ialah pembantu yang sangat pantas dalam kerja ini; Tetapi anda sendiri yang memutuskan apa yang hendak dibersihkan dan bagaimana, kerana setiap pilihan pembersihan mengubah analisis.
Peraturan emas pembersihan: setiap perubahan adalah keputusan
Memadam sel, mengisi nilai yang hilang dengan min, memangkas outlier-tiada satu pun daripada ini adalah operasi "neutral". Masing-masing mengubah data dan mempengaruhi hasilnya. Jadi peraturan emas pembersihan: tulis setiap perubahan ke dalam kod, perhatikan rasionalnya, jangan sekali-kali menimpa data asal. AI memberi anda kod pembersihan pantas, tetapi menjadi tanggungjawab anda untuk memahami perkara yang dilakukan oleh kod itu; Jangan jalankannya tanpa melihat berapa banyak baris yang hilang apabila anda menyebut "padam baris kosong".
Awas: Jangan sekali-kali mengubah suai data mentah asal. Tulis versi yang telah dibersihkan ke fail/jadual yang berasingan. Dengan cara ini, jika anda melihat ralat, anda boleh kembali ke petak pertama dan mengekalkan kebolehulangan.
Nilai yang tiada: mengapa ia kosong, apa yang perlu dilakukan
Nilai yang tiada (biasanya muncul sebagai NaN — "Bukan Nombor" dalam panda) ialah apabila sel kosong. Tetapi punca jurang menentukan penyelesaian. Terdapat tiga situasi biasa. Hilang rawak: penderia tidak berfungsi seketika; Ia mungkin munasabah untuk mengisinya. Hilang sistematik: medan borang hanya diminta untuk pelanggan tertentu; Jurang di sini sebenarnya adalah maklumat. Hilang yang ketara: jika "tarikh pemulangan" kosong, pelanggan tidak kembali; Ruang ini bermaksud 0 atau "tiada", ia tidak diisi.
Strategi utama:
Strategi
Bilakah ia sesuai?
risiko
Padamkan baris
Kadar hilang adalah sangat rendah (<5%) dan rawak
Kehilangan data dan perwakilan
Padamkan lajur
Kebanyakan lajur kosong (>60%)
kehilangan maklumat
Isian purata/median
Angka, hilang secara rawak
Ia mengurangkan varians dan memesongkan taburan
Kategori "tidak diketahui"
Kategori, sistematik hilang
Menghasilkan kategori tambahan
Ramalan dengan model
Lajur yang kompleks dan berharga
Risiko kebocoran, kerumitan
Titik kritikal: nilai imputasi hendaklah dikira hanya daripada data latihan dan nilai yang sama hendaklah digunakan pada data ujian. Jika anda memasukkan purata data ujian, anda mencipta kebocoran (Unit 10). Median (nilai tengah data ordinal) sering diutamakan daripada min kerana ia lebih teguh kepada outlier daripada min.
Outliers: ralat atau nyata?
Outlier boleh menjadi salah satu daripada dua perkara: ralat data (999 dalam lajur umur) atau peristiwa sebenar tetapi jarang berlaku (pesanan $2 juta pelanggan). Mengelirukan kedua-duanya adalah malapetaka: padamkan outlier yang benar dan anda membuang maklumat penting; Jika anda melepaskan kesilapan, purata anda akan menderita. Oleh itu, adalah perlu untuk memeriksa outlier terlebih dahulu, bukan untuk memadamnya secara automatik.
Kaedah pengesanan biasa: Kaedah IQR (julat antara kuartil; nilai yang lebih daripada 1.5 kali perbezaan antara 25% dan 75% kuintil data dianggap outlier) dan z-skor (bilangan sisihan piawai yang jauh dari nilai min; biasanya outlier jika lebih besar daripada 3). AI menulis kod untuk pengiraan ini dalam beberapa saat; Tetapi sebelum anda menyebut "padam", semak apakah nilai tersebut.
Penukaran jenis dan format: sumber ralat senyap
Salah satu yang paling menyakitkan kepala ialah kekeliruan jenis data. Jika lajur "jumlah" disimpan sebagai teks, anda tidak boleh menambah; Program ini salah membaca nombor berformat Turki seperti "1,250.50" dan bukannya "seribu dua ratus lima puluh". Tarikh ("01/03/2024" hari-bulan atau bulan-hari?), kategori ("Lelaki"/"lelaki"/"M" adalah perkara yang sama?) dan unit (TL atau kuruş?) secara senyap menghasilkan hasil yang salah. Sebahagian besar daripada pembersihan adalah menarik ketidakkonsistenan ini ke dalam standard: tarikh ke dalam satu format, kategori ke dalam satu ejaan, nombor ke dalam satu unit.
tiga kes mini
Kes 1 — Perangkap purata. Satu pasukan mengisi 320 nilai yang hilang dalam lajur pendapatan dengan purata ($48,500). Tetapi kelemahannya adalah sistematik: ini adalah segmen berpendapatan rendah yang tidak pernah mengisytiharkan pendapatan. Pengisian purata menjadikan kumpulan ini kaya buatan dan model kredit adalah salah. Pengajaran: tanya "mengapa kosong" sebelum mengisinya.
Kes 2 — Outlier yang tidak boleh dipadamkan. Seorang penganalisis runcit memadamkan 4 pesanan besar (1.8 juta TL setiap satu) dalam data jualan, menganggap ia adalah "kesilapan". Walau bagaimanapun, ini adalah pesanan korporat sebenar dan merupakan 22% daripada jumlah perolehan. Model ramalan selepas pemadaman terlepas sepenuhnya permintaan institusi. Pengajaran: periksa outlier sebelum memadamnya.
Kes 3 — Bencana format tarikh. Dalam CSV, tarikh dicampurkan ke dalam "2024-03-01" dan "01.03.2024". Apabila kod yang ditulis oleh YZ dihuraikan mengikut format pertama, 6,400 baris menjadi NaT sebagai "tarikh tidak sah" dan secara senyap dikecualikan daripada analisis. Penganalisis hanya menyedari ini apabila bilangan baris berkurangan. Pelajaran: sentiasa semak bilangan baris dan tempat kosong selepas penukaran.
Empat templat yang boleh disalin
1) Peta nilai tiada:
Saya mempunyai df panda. Tulis kod yang menghasilkan jadual yang menunjukkan bilangan dan peratusan hilang (NaN) untuk setiap lajur. Kemudian, senaraikan secara berasingan lajur dengan kadar hilang melebihi 40% dan lajur dengan kadar hilang di bawah 5%. Hanya jana kod diagnosis ini, bukan strategi yang anda cadangkan; Saya akan membuat keputusan.
2) Pemeriksaan outlier (bukan pemadaman):
Tulis kod yang MENGESAN (bukan memadam!) outlier untuk lajur "jumlah" saya menggunakan kaedah IQR. Letakkan baris terpencil dalam df yang berasingan supaya saya boleh memeriksanya secara manual. Cetak juga bilangan outlier dan bahagiannya dalam jumlah keseluruhan.
3) Penyeragaman jenis/format:
Tulis kod yang menyeragamkan lajur berikut:- "tarikh": boleh bercampur format ("2024-03-01" dan "01.03.2024"); tukarkan semuanya kepada datetime, kira yang tidak boleh diterjemahkan dan laporkan (buang senyap). - "jantina": "Lelaki"/"lelaki"/"M" -> "M", "Perempuan"/"perempuan"/"F" -> "K". - "jumlah": teks berformat Turki ("1.250,50") -> nombor perpuluhan. Cetak bilangan baris yang terjejas selepas setiap penukaran.
4) Semak sebelum/selepas pembersihan:
Tulis kod yang membandingkan df.shape, kiraan hilang dan statistik ringkasan (min, median, min, maks) lajur yang dipilih sebelum dan selepas langkah pembersihan. Tujuan: untuk melihat perubahan pembersihan.
Gesaan lemah / Gesaan kuat
Gesaan yang lemah:
Kosongkan data ini.
"Jelas" adalah samar-samar; AI tidak tahu bahagian mana yang hilang harus dipadamkan, apa yang perlu diisi, lajur mana yang perlu diproses dan bagaimana. Hasilnya: perubahan buta dan tidak dapat dipulihkan.
Gesaan kuat:
Peranan anda: pembantu pembersihan data. lajur df: id_pelanggan (int), tarikh_daftar (teks format campuran), revenue_tl (teks, "1,200.00"), bandar (teks, ejaan tidak konsisten). Peraturan:- Menukar df asal; Kerjakan salinan bernama df_clean.- Tukar income_tl kepada nombor, kira apa yang tidak boleh diterjemahkan.- Tukar rekod_tarikh kepada tarikh tarikh, laporkan ralat.- Jangan padam sebarang baris tanpa kebenaran saya; Tunjukkan calon secara berasingan. Selepas setiap langkah, cetak df_temiz.shape dan nombor yang hilang.
Di sini sumber dilindungi, setiap transformasi dikira, penghapusan diserahkan kepada manusia.
Kesilapan biasa
- Mengisi ruang kosong tanpa bertanya "kenapa kosong?" Mengisi kekurangan sistematik/ketara dengan min memesongkan data.
- Memadamkan outlier tanpa memeriksanya. Membuang peristiwa sebenar tetapi jarang berlaku memusnahkan maklumat penting.
- Mengira nilai padding daripada semua data. Termasuk data ujian mewujudkan kebocoran; hanya mengira dari latihan.
- Tidak menyemak bilangan baris/kosong selepas penukaran. Baris yang senyap NaT/NaN dikecualikan daripada analisis.
- Mengganti data asal. Pulangan dan kebolehulangan hilang.
Petua: Jalankan pembersihan dengan perbandingan "sebelum selepas". Cetak df.shape, kiraan hilang dan statistik ringkasan lajur kritikal selepas setiap langkah. Jadi anda serta-merta melihat bahawa satu langkah secara tidak dijangka memusnahkan 6,000 baris.
Secara ringkasnya
Pembersihan adalah fasa sains data yang paling memakan masa dan memerlukan keputusan. Setiap perubahan mengubah data, jadi setiap satu adalah keputusan yang sedar. Untuk nilai yang tiada, tanya "mengapa ia kosong?" Semak sebarang outlier sebelum memadamnya; Bawa jenis dan format kepada standard. Kira nilai isian daripada data latihan sahaja, simpan yang asal dan jejaki kesan setiap langkah dengan mengiranya. AI ialah pemecut yang hebat dalam perniagaan ini, tetapi manusia menentukan perkara yang anda bersihkan dan sebabnya.
Tugasan permohonan
Ambil (atau buat) jadual kecil dan sengaja masukkan tiga masalah ke dalamnya: tuple nilai yang hilang, outlier, format tarikh bercampur. Minta kod diagnosis dan penyeragaman daripada AI dengan templat di atas; bandingkan bilangan baris dan tempat kosong sebelum/selepas setiap langkah. Cuba dapatkan sekurang-kurangnya satu "kerugian senyap" dan perhatikan bagaimana anda menyedarinya.
senarai semak
- [ ] Adakah saya menyimpan data mentah asal dan bekerja pada salinan?
- [ ] Pernahkah saya bertanya soalan "mengapa ia kosong" untuk setiap lajur yang hilang?
- [ ] Adakah saya menyemak outlier sebelum memadamkannya?
- [ ] Adakah saya mengira nilai padding daripada data latihan sahaja?
- [ ] Adakah saya menyemak bilangan baris/kosong selepas setiap langkah dan menghapuskan kehilangan senyap?