Yksikkö 3 / 11

Tietojen puhdistus ja esikäsittely: puuttuva arvo, poikkeava arvo ja tyypin muunnos

Voitot:

  • Kyky erottaa puuttuvien arvojen syyt (satunnainen, systemaattinen, merkityksellinen) ja valita sopiva strategia ja laskea täyttöarvo pelkästään harjoittelusta
  • Kyky tutkia poikkeavia arvoja ennen niiden poistamista ja tehdä ero tietovirheen ja todellisen harvinaisen tapahtuman välillä
  • Mahdollisuus estää hiljainen menetys tarkkailemalla kunkin vaiheen vaikutusta rivien/aihioiden määrään ja tuomalla tyyppi- ja muotoepäjohdonmukaisuudet standardiin

Noin 60-80 prosenttia datatieteilijän ajasta menee siivoamiseen; Teollisuudessa tätä kutsutaan puoliksi vitsillä "data wranglingiksi" (data wrangling tai datan puhdistaminen). Koska tosielämän tiedot eivät melkein koskaan ole valmiita analysoitavaksi: päivämäärät ovat eri muodoissa, numerot tallennetaan tekstinä, jotkut solut ovat tyhjiä, asiakas esiintyy kolme kertaa samassa taulukossa kahdella eri kirjoitusasulla. Tässä osiossa käsittelemme kolme puhdistamisen perusnäkökohtaa: puuttuvat arvot, poikkeamat ja tyypin/muodon muunnos. Tekoäly on tässä työssä poikkeuksellisen nopea apulainen; Mutta sinä päätät, mitä puhdistat ja miten, koska jokainen puhdistusvalinta muuttaa analyysiä.

Siivouksen kultainen sääntö: jokainen muutos on päätös

Solun poistaminen, puuttuvan arvon täyttäminen keskiarvolla, poikkeavan rajan leikkaaminen – mikään näistä ei ole "neutraali" operaatio. Jokainen muuttaa tietoja ja vaikuttaa tulokseen. Siivouksen kultainen sääntö: kirjoita jokainen muutos koodiin, huomioi perustelut, älä koskaan kirjoita alkuperäisiä tietoja päälle. Tekoäly antaa sinulle nopean puhdistuskoodin, mutta sinun vastuullasi on ymmärtää, mitä koodi tekee; Älä suorita sitä näkemättä kuinka monta riviä on mennyt, kun sanot "poista tyhjät rivit".

Varoitus: Älä koskaan muuta alkuperäisiä raakatietoja. Kirjoita puhdistettu versio erilliseen tiedostoon/taulukkoon. Tällä tavalla, jos huomaat virheen, voit palata alkutilaan ja säilyttää toistettavuuden.

Puuttuvat arvot: miksi se on tyhjä, mitä tehdä

Puuttuva arvo (näkyy yleensä nimellä NaN - "Ei numero" pandoissa) on, kun solu on tyhjä. Mutta eron syy ratkaisee ratkaisun. Tyypillisiä tilanteita on kolme. Satunnainen puuttuu: anturi ei toiminut hetkeen; Se voi olla järkevää täyttää. Systemaattinen puuttuminen: lomakekenttää pyydetään vain tietyiltä asiakkailta; Tämä aukko on itse asiassa tieto. Merkittävä puuttuu: jos "palautuspäivä" on tyhjä, asiakas ei palannut; Tämä väli tarkoittaa 0 tai "ei mitään", sitä ei täytetty.

Tärkeimmät strategiat:

strategia

Milloin se on sopivaa?

riskiä

Poista rivi

Puuttuvien määrä on erittäin alhainen (<5 %) ja satunnainen

Tietojen ja edustuksen menetys

Poista sarake

Suurin osa sarakkeesta on tyhjä (>60 %)

tiedon menetys

Keskimääräinen/mediaanitäyttö

Numero, puuttuu satunnaisesti

Se vähentää varianssia ja vääristää jakautumista

Luokka "tuntematon"

Kategorinen, systemaattinen puuttuu

Luo lisäluokkia

Ennuste mallin kanssa

Monimutkainen, arvokas sarake

Vuotoriski, monimutkaisuus

Kriittinen kohta: imputointiarvo tulee laskea vain harjoitustiedoista ja samaa arvoa tulee soveltaa testitietoihin. Jos sisällytät testitietojen keskiarvon, luot vuodon (yksikkö 10). Mediaania (järjestystietojen keskiarvoa) pidetään usein parempana kuin keskiarvona, koska se on robustimpi poikkeaville arvoille kuin keskiarvo.

Outliers: virhe vai todellinen?

Poikkeava arvo voi olla jompikumpi kahdesta asiasta: tietovirhe (999 ikäsarakkeessa) tai todellinen mutta harvinainen tapahtuma (asiakkaan 2 miljoonan dollarin tilaus). Näiden kahden sekoittaminen on tuhoisaa: poista todellinen poikkeava ja heität pois tärkeät tiedot; Jos päästät irti virheestä, keskiarvosi kärsii. Siksi poikkeava on ensin tutkittava, ei sitä pitäisi poistaa automaattisesti.

Yleisimmät havaitsemismenetelmät: IQR-menetelmä (kvartiiliväli; arvot, jotka ovat yli 1,5 kertaa 25 %:n ja 75 %:n kvintiilien eroa datasta, katsotaan poikkeaviksi) ja z-pisteet (keskipoikkeamien määrä pois keskiarvosta; yleensä poikkeava, jos se on suurempi kuin 3). Tekoäly kirjoittaa näiden laskelmien koodin sekunneissa; Mutta ennen kuin sanot "poista", tarkista, mitkä arvot ovat.

Tyyppi- ja muotomuunnos: hiljainen virhelähde

Yksi päänsärkyistä on tietotyyppien hämmennys. Jos "summa"-sarake on tallennettu tekstinä, et voi lisätä; Ohjelma lukee väärin turkkimuotoisen luvun, kuten "1 250,50" "tuhatkaksisataaviisikymmentä" sijaan. Päivämäärät ("01/03/2024" päivä-kuukausi vai kuukausi-päivä?), luokat ("mies"/"mies"/"M" ovat sama asia?) ja yksiköt (TL vai kuruş?) tuottavat äänettömästi vääriä tuloksia. Suuri osa siivoamisesta on näiden epäjohdonmukaisuuksien yhdistäminen standardiin: päivämäärät yhteen muotoon, luokat yhteen oikeinkirjoitukseen, numerot yhteen yksikköön.

kolme minilaukkua

Tapaus 1 – Keskimääräinen ansa. Ryhmä täytti tulosarakkeeseen 320 puuttuvaa arvoa keskiarvolla (48 500 dollaria). Mutta puutteet olivat systemaattisia: tämä oli pienituloinen segmentti, joka ei ollut koskaan ilmoittanut tuloja. Keskimääräinen täyttö teki tästä ryhmästä keinotekoisen rikkaan ja luottomalli oli väärä. Oppitunti: kysy "miksi se on tyhjä" ennen sen täyttämistä.

Tapaus 2 – Poikkeava, jota ei pidä poistaa. Vähittäiskaupan analyytikko poisti myyntitiedoista 4 valtavaa tilausta (1,8 miljoonaa TL kukin) luullen ne "virheiksi". Nämä olivat kuitenkin todellisia yritystilauksia ja 22 % kokonaisliikevaihdosta. Poiston jälkeinen ennustemalli missasi täysin institutionaalisen kysynnän. Oppitunti: tutki outlier ennen sen poistamista.

Tapaus 3 – Päivämäärämuodon katastrofi. CSV-tiedostossa päivämäärät sekoitettiin sekä "2024-03-01" että "01.03.2024". Kun YZ:n kirjoittama koodi jäsennettiin ensimmäisen muodon mukaan, 6 400 riviä muuttui NaT:ksi "virheelliseksi päivämääräksi" ja ne jätettiin hiljaa pois analyysistä. Analyytikko huomasi tämän vasta, kun rivien määrä väheni. Oppitunti: tarkista aina rivien ja välien määrä muuntamisen jälkeen.

Neljä kopioitavaa mallia

1) Puuttuva arvokartta:

Minulla on pandat df. Kirjoita koodi, joka tuottaa taulukon, joka näyttää puuttuvien (NaN) määrän ja prosenttiosuuden jokaiselle sarakkeelle. Listaa sitten erikseen sarakkeet, joiden puuttuva osuus on yli 40 %, ja sarakkeet, joiden puuttuva osuus on alle 5 %. Luo vain tämä diagnoosikoodi, älä ehdottamasi strategiaa. Minä teen päätöksen.

2) Outlier-tarkastus (ei poistoa):

Kirjoita koodi, joka TUNNISTAA (ei poista!) poikkeavia arvoja "summa"-sarakkeessani käyttämällä IQR-menetelmää. Laita syrjäiset rivit erilliseen tiedostoon, jotta voin tarkastella niitä manuaalisesti. Tulosta myös poikkeamien lukumäärä ja niiden osuus kokonaismäärästä.

3) Tyyppi/muotostandardointi:

Kirjoita koodi, joka standardoi seuraavat sarakkeet:- "päivämäärä": voi olla eri muotoja ("2024-03-01" ja "01.03.2024"); Muunna ne kaikki päivämäärä-aikaan, laske kääntämättömät ja raportoi (heitä pois hiljaa). - "sukupuoli": "Mies"/"mies"/"M" -> "M", "nainen"/"nainen"/"F" -> "K". - "summa": turkin muotoinen teksti ("1.250,50") -> desimaaliluku. Tulosta kunkin muuntamisen jälkeen, kuinka monta riviä se vaikuttaa.

4) Tarkista ennen/puhdistuksen jälkeen:

Kirjoita koodi, joka vertaa valittujen sarakkeiden df.shapea, puuttuvaa määrää ja yhteenvetotilastoja (keskiarvo, mediaani, min, maksimi) ennen ja jälkeen puhdistusvaiheen. Tarkoitus: nähdä, mitä puhdistus muuttuu.

Heikko kehote / Vahva kehote

Heikko kehote:

Tyhjennä nämä tiedot.

"Clear" on moniselitteinen; Tekoäly ei tiedä, mitä puuttuvia osia pitäisi poistaa, mitä täyttää, mikä sarake käsitellä ja miten. Tulos: sokeita, peruuttamattomia muutoksia.

Tehokas kehotus:

Sinun roolisi: tietojen puhdistusassistentti. df-sarakkeet: customer_id (int), rekisteröinnin_päivämäärä (sekamuotoinen teksti), tulo_tl (teksti, "1 200,00"), kaupunki (teksti, epäjohdonmukainen kirjoitusasu). Säännöt: - Alkuperäisen df:n muuttaminen; Työskentele kopiolla nimeltä df_clean.- Muunna tulo_tl numeroiksi, laske se, mitä ei voida kääntää.- Muuta tietue_päivämääräksi datetime, ilmoita virheestä.- Älä poista rivejä ilman lupaani; Näytä ehdokkaat erikseen. Tulosta jokaisen vaiheen jälkeen df_temiz.shape ja puuttuva numero.

Täällä lähde on suojattu, jokainen muunnos lasketaan, poistaminen jätetään ihmiselle.

Yleisiä virheitä

  • Täyttää aukot kysymättä "miksi se on tyhjä?" Systemaattisen/merkittävän puutteen täyttäminen keskiarvolla vääristää dataa.
  • Poikkeaman poistaminen tutkimatta sitä. Todellisten mutta harvinaisten tapahtumien hylkääminen tuhoaa tärkeän tiedon.
  • Täytearvon laskeminen kaikista tiedoista. Testitietojen lisääminen aiheuttaa vuotoa; laske vain harjoittelusta.
  • Ei tarkisteta rivien/tyhjien määrää muuntamisen jälkeen. Rivit, jotka ovat hiljaa NaT/NaN, jätetään analyysin ulkopuolelle.
  • Alkuperäisten tietojen korvaaminen. Palautus ja uusittavuus menetetään.
Vinkki: Suorita puhdistus "ennen jälkeen" -vertailulla. Tulosta df.shape, puuttuvat määrät ja kriittisten sarakkeiden yhteenvetotilastot jokaisen vaiheen jälkeen. Joten näet heti, että yksi askel tuhoaa odottamatta 6 000 riviä.

Yhteenvetona

Puhdistaminen on datatieteen aikaa vievin ja päätöstä vaativin vaihe. Jokainen muutos muuttaa dataa, joten jokainen on tietoinen päätös. Jos arvot puuttuvat, kysy "miksi se on tyhjä?" Tarkista mahdolliset poikkeamat ennen niiden poistamista. Tuo tyyppi ja muoto standardiin. Laske täyttöarvo vain harjoitustiedoista, säilytä alkuperäinen ja seuraa kunkin vaiheen vaikutusta laskemalla se. Tekoäly on valtava kiihdytin tällä alalla, mutta ihmiset päättävät, mitä puhdistat ja miksi.

Sovellustehtävä

Ota (tai luo) pieni taulukko ja lisää siihen tarkoituksella kolme tehtävää: puuttuva arvotuple, outlier, sekoitettu päivämäärämuoto. Pyydä diagnoosi- ja standardointikoodi tekoälyltä yllä olevilla malleilla; vertaa rivien ja aihioiden määrää ennen/jälkeen jokaista vaihetta. Yritä saada kiinni ainakin yksi "hiljainen menetys" ja pane merkille, kuinka huomasit sen.

tarkistuslista

  • [ ] Säilytinkö alkuperäiset raakatiedot ja työstinkö kopiota?
  • [ ] Olenko esittänyt kysymyksen "miksi se on tyhjä" jokaiselle puuttuvalle sarakkeelle?
  • [ ] Tarkistinko poikkeamat ennen niiden poistamista?
  • [ ] Laskinko täytearvon vain harjoitustiedoista?
  • [ ] Tarkistanko rivien/aihioiden määrän jokaisen vaiheen jälkeen ja poistanko hiljaisen katoamisen?