Dobici:
- Sposobnost razlikovanja uzroka nedostajućih vrijednosti (slučajnih, sistematičnih, smislenih) i odabira odgovarajuće strategije i izračunavanja vrijednosti punjenja samo iz treninga
- Sposobnost da se ispitaju odstupanja prije brisanja i da se napravi razlika između greške u podacima i istinskog rijetkog događaja
- Sposobnost da se spreči tihi gubitak praćenjem uticaja svakog koraka na broj redova/praznih mesta uz dovođenje nedoslednosti tipa i formata na standard
Otprilike 60-80 posto vremena naučnika podataka odlazi na čišćenje; U industriji, ovo se u polušali naziva "data wrangling" (data wrangling ili data cleaning). Zato što podaci iz stvarnog svijeta gotovo nikada nisu spremni za analizu: datumi su u mješovitim formatima, brojevi se pohranjuju kao tekst, neke ćelije su prazne, kupac se pojavljuje tri puta u istoj tabeli s dva različita pisanja. U ovoj jedinici ćemo pokriti tri osnovna aspekta čišćenja: nedostajuće vrijednosti, odstupanja i konverziju tipa/formata. Umjetna inteligencija je izuzetno brz pomoćnik u ovom poslu; Ali vi odlučujete šta i kako čistiti, jer svaki izbor čišćenja mijenja analizu.
Zlatno pravilo čišćenja: svaka promjena je odluka
Brisanje ćelije, popunjavanje nedostajuće vrijednosti srednjom vrijednosti, skraćivanje outlier-a – nijedna od ovih operacija nije “neutralna”. Svaki mijenja podatke i utječe na rezultat. Dakle, zlatno pravilo čišćenja: upišite svaku promjenu u kod, obratite pažnju na obrazloženje, nikada ne prepišite originalne podatke. AI vam daje brzi kod za čišćenje, ali vaša je odgovornost da shvatite šta taj kod radi; Nemojte ga pokretati a da ne vidite koliko je redova nestalo kada kažete "izbriši prazne redove".
Oprez: Nikada nemojte mijenjati originalne neobrađene podatke. Očišćenu verziju zapišite u zasebnu datoteku/tabelu. Na ovaj način, ako uočite grešku, možete se vratiti na početak i održati ponovljivost.
Nedostaju vrijednosti: zašto je prazan, šta učiniti
Vrijednost koja nedostaje (obično se pojavljuje kao NaN — "Nije broj" u pandama) je kada je ćelija prazna. Ali uzrok jaza određuje rješenje. Postoje tri tipične situacije. Nasumično nedostaje: senzor nije radio na trenutak; Možda bi bilo razumno da ga popunite. Sistematski nedostaje: polje obrasca se traži samo za određene kupce; Ovdje je praznina zapravo informacija. Značajno nedostaje: ako je "datum povratka" prazan, kupac se nije vratio; Ovaj prostor znači 0 ili "ništa", nije popunjen.
Glavne strategije:
Strategija
Kada je prikladno?
rizik
Izbriši red
Stopa propuštanja je vrlo niska (<5%) i nasumična
Gubitak podataka i reprezentacije
Izbrišite kolonu
Većina kolone je prazna (>60%)
gubitak informacija
Prosjek/srednja popunjenost
Numerički, nedostaje nasumično
Smanjuje varijansu i iskrivljuje distribuciju
Kategorija "nepoznato"
Nedostaje kategoričan, sistematski
Generiše dodatne kategorije
Predviđanje sa modelom
Kompleksna, dragocena kolona
Rizik od curenja, složenost
Kritična tačka: imputovanu vrijednost treba izračunati samo iz podataka o obuci i istu vrijednost treba primijeniti na podatke testa. Ako uključite prosjek podataka testa, stvarate curenje (Jedinica 10). Medijan (srednja vrijednost rednih podataka) se često preferira u odnosu na srednju vrijednost zato što je robustniji prema odstupnicima od srednje vrijednosti.
Outliers: greška ili stvarna?
Izuzetak može biti jedna od dvije stvari: greška u podacima (999 u koloni starosti) ili stvaran, ali rijedak događaj (narudžba kupca od 2 miliona dolara). Zbrkati ovo dvoje je pogubno: izbrišite istinski izuzetak i odbacićete važne informacije; Ako otpustite grešku, vaši prosjeci će patiti. Zbog toga je potrebno prvo ispitati outlier, a ne automatski ga izbrisati.
Uobičajene metode detekcije: IQR metoda (interkvartilni raspon; vrijednosti koje su više od 1,5 puta razlike između 25% i 75% kvintila podataka smatraju se izvanrednim vrijednostima) i z-score (broj standardnih devijacija udaljenih od srednje vrijednosti koja je; obično odstupnica ako je veća od 3). AI piše kod za ove proračune u sekundi; Ali prije nego što kažete "izbriši", provjerite koje su to vrijednosti.
Konverzija tipa i formata: tihi izvor greške
Jedna od najvećih glavobolja je konfuzija tipa podataka. Ako je kolona "iznos" pohranjena kao tekst, ne možete dodati; Program pogrešno čita broj u turskom formatu kao što je "1.250,50" umjesto "hiljadu dvjesto pedeset". Datumi ("01/03/2024" dan-mjesec ili mjesec-dan?), kategorije ("muški"/"muški"/"M" su ista stvar?) i jedinice (TL ili kuruş?) tiho daju netačne rezultate. Veliki dio čišćenja je povlačenje ovih nedosljednosti u standard: datumi u jedan format, kategorije u jedan pravopis, brojevi u jednu jedinicu.
tri mini kofera
Slučaj 1 — Prosječna zamka. Tim je popunio 320 nedostajućih vrijednosti u koloni prihoda sa prosjekom (48.500 dolara). Ali nedostaci su bili sistematski: radilo se o segmentu sa niskim primanjima koji nikada nije prijavio prihod. Prosječno popunjavanje učinilo je ovu grupu umjetno bogatom, a kreditni model je bio pogrešan. Lekcija: pitajte "zašto je prazan" prije nego što ga popunite.
Slučaj 2 — Izuzetak koji se ne bi trebao brisati. Maloprodajni analitičar je izbrisao 4 ogromne narudžbe (1,8 miliona TL svaka) u podacima o prodaji, misleći da su to "greške". Međutim, to su bile stvarne korporativne narudžbe i činile su 22% ukupnog prometa. Model predviđanja nakon brisanja potpuno je promašio institucionalnu potražnju. Pouka: ispitajte odstupnicu prije nego što je obrišete.
Slučaj 3 — Katastrofa u formatu datuma. U CSV-u, datumi su pomiješani u "2024-03-01" i "01.03.2024". Kada je kod koji je napisao YZ raščlanjen prema prvom formatu, 6.400 linija postalo je NaT kao "nevažeći datum" i tiho je isključeno iz analize. Analitičar je to primijetio tek kada se smanjio broj redova. Lekcija: uvijek provjerite broj redova i praznina nakon konverzije.
Četiri šablona za kopiranje
1) Nedostaje mapa vrijednosti:
Imam pande df. Napišite kod koji proizvodi tabelu koja prikazuje broj i procenat nedostajućih (NaN) za svaku kolonu. Zatim posebno navedite kolone sa stopom manjka koja prelazi 40% i one sa stopom manjka od 5%. Samo generirajte ovaj dijagnostički kod, a ne strategiju koju predlažete; Ja ću donijeti odluku.
2) Vanredni pregled (ne brisanje):
Napišite kod koji OTKRIVA (ne briše!) odstupanja za moju kolonu "iznos" koristeći IQR metodu. Stavite vanredne redove u poseban df tako da ih mogu ručno ispitati. Također odštampajte broj odstupanja i njihov udio u ukupnom iznosu.
3) Standardizacija tipa/formata:
Napišite kod koji standardizira sljedeće kolone:- "datum": mogu biti mješoviti formati ("2024-03-01" i "01.03.2024"); pretvorite ih sve u datum i vrijeme, prebrojite neprevodive i prijavite (tiho bacite). - "gender": "Muški"/"muški"/"M" -> "M", "Ženski"/"ženski"/"F" -> "K". - "iznos": tekst u turskom formatu ("1.250,50") -> decimalni broj. Odštampajte na koliko redova utiče svaka konverzija.
4) Provjerite prije/poslije čišćenja:
Napišite kod koji upoređuje df.shape, nedostajući broj i zbirnu statistiku (srednja vrijednost, medijan, min, max) odabranih stupaca prije i nakon koraka čišćenja. Svrha: vidjeti šta se mijenja čišćenjem.
Slaba prompt / Jaka prompt
Slab upit:
Obrišite ove podatke.
"Jasno" je dvosmisleno; AI ne zna koje dijelove koji nedostaju treba izbrisati, šta popuniti, koju kolonu obraditi i kako. Rezultat: slijepe, nepovratne promjene.
Snažan upit:
Vaša uloga: pomoćnik za čišćenje podataka. df kolone: customer_id (int), register_date (tekst u mješovitom formatu), revenue_tl (tekst, "1.200,00"), grad (tekst, nedosljedan pravopis). Pravila: - Promjena originalnog df-a; Radite na kopiji pod nazivom df_clean.- Pretvorite prihod_tl u broj, prebrojite ono što se ne može prevesti.- Promijenite record_date u datetime, prijavite grešku.- Nemojte brisati nijedan red bez mog odobrenja; Pokažite kandidate odvojeno. Nakon svakog koraka, ispišite df_temiz.shape i broj koji nedostaje.
Ovdje je izvor zaštićen, svaka transformacija se računa, brisanje je prepušteno čovjeku.
Uobičajene greške
- Popunjavanje praznina bez pitanja "zašto je prazan?" Popunjavanje sistematskog/značajnog nedostatka srednjom vrijednosti iskrivljuje podatke.
- Brisanje odstupanja bez ispitivanja. Odbacivanje stvarnih, ali rijetkih događaja uništava važne informacije.
- Izračunavanje vrijednosti dopuna iz svih podataka. Uključivanje testnih podataka stvara curenje; samo izračunaj iz treninga.
- Ne provjerava se broj redova/praznina nakon konverzije. Redovi koji su tihi NaT/NaN isključeni su iz analize.
- Prepisivanje originalnih podataka. Povrat i reproduktivnost su izgubljeni.
Savjet: Pokrenite čišćenje uz poređenje "prije i poslije". Odštampajte df.shape, nedostajući broj i zbirnu statistiku kritičnih kolona nakon svakog koraka. Tako da odmah vidite da jedan korak neočekivano uništava 6.000 redova.
Ukratko
Čišćenje je faza nauke o podacima koja oduzima najviše vremena i zahtijeva odluke. Svaka promjena mijenja podatke, tako da je svaka svjesna odluka. Za vrijednosti koje nedostaju, pitajte "zašto je prazan?" Pregledajte sve odlike prije nego što ih izbrišete; Dovedite tip i format na standard. Izračunajte vrijednost punjenja samo iz podataka o treningu, zadržite original i pratite utjecaj svakog koraka tako što ćete ga brojati. AI je ogroman akcelerator u ovom poslu, ali ljudi odlučuju šta ćete čistiti i zašto.
Zadatak aplikacije
Uzmite (ili kreirajte) malu tabelu i namerno ubacite tri problema u nju: tuple vrednosti koje nedostaju, outlier, mešoviti format datuma. Zatražite kod za dijagnozu i standardizaciju od AI sa gornjim šablonima; uporedi broj redova i praznina prije/poslije svakog koraka. Pokušajte uhvatiti barem jedan "tihi gubitak" i zabilježite kako ste ga primijetili.
kontrolna lista
- [ ] Da li sam zadržao originalne neobrađene podatke i radio na kopiji?
- [ ] Da li sam postavio pitanje "zašto je prazan" za svaku kolonu koja nedostaje?
- [ ] Jesam li pregledao odlike prije nego što sam ih izbrisao?
- [ ] Jesam li izračunao vrijednost dopune samo iz podataka o obuci?
- [ ] Provjeravam li broj redova/praznina nakon svakog koraka i eliminišem li tihi gubitak?