Enhet 3 / 11

Datarensing og forbehandling: Manglende verdi, avvik og typekonvertering

Gevinster:

  • Evne til å skille årsaken til manglende verdier (tilfeldig, systematisk, meningsfull) og velge riktig strategi og beregne fyllverdien fra trening alene
  • Evne til å undersøke uteliggere før du sletter dem og skille mellom en datafeil og en sann sjelden hendelse
  • Evne til å forhindre stille tap ved å overvåke virkningen av hvert trinn på antall linjer/blanketter samtidig som type- og formatinkonsekvenser bringes til standarden

Omtrent 60-80 prosent av en dataforskers tid går til rengjøring; I bransjen kalles dette halvt på spøk "datakrangel" (datakrangel eller datarydding). Fordi data fra den virkelige verden nesten aldri er klare for analyse: datoer er i blandede formater, tall lagres som tekst, noen celler er tomme, en kunde vises tre ganger i samme tabell med to forskjellige stavemåter. I denne enheten vil vi dekke tre grunnleggende aspekter ved opprydding: manglende verdier, uteliggere og type/formatkonvertering. Kunstig intelligens er en usedvanlig rask assistent i dette arbeidet; Men det er du som bestemmer hva du skal rengjøre og hvordan, for hvert rengjøringsvalg endrer analysen.

Den gylne regelen for rengjøring: hver endring er en avgjørelse

Slette en celle, fylle inn en manglende verdi med gjennomsnittet, trimme en uteligger – ingen av disse er "nøytrale" operasjoner. Hver endrer dataene og påvirker resultatet. Så den gylne regelen for opprydding: skriv hver endring i koden, legg merke til begrunnelsen, overskriv aldri de originale dataene. AI gir deg rask oppryddingskode, men det er ditt ansvar å forstå hva den koden gjør; Ikke kjør den uten å se hvor mange linjer som er borte når du sier "slett tomme linjer".

Forsiktig: Ikke modifiser de originale rådataene. Skriv den rensede versjonen til en egen fil/tabell. På denne måten, hvis du oppdager en feil, kan du gå tilbake til utgangspunktet og opprettholde reproduserbarheten.

Manglende verdier: hvorfor er det tomt, hva du skal gjøre

En manglende verdi (som vanligvis vises som NaN - "Ikke et tall" i pandaer) er når en celle er tom. Men årsaken til gapet bestemmer løsningen. Det er tre typiske situasjoner. Tilfeldig mangler: sensoren fungerte ikke et øyeblikk; Det kan være rimelig å fylle den ut. Systematisk mangler: et skjemafelt spørres kun for enkelte kunder; Gapet her er faktisk informasjon. Betydelig mangler: hvis "returdato" er blank, returnerte ikke kunden; Denne plassen betyr 0 eller "ingen", den er ikke fylt.

Hovedstrategier:

Strategi

Når er det passende?

risiko

Slett rad

Manglende andel er svært lav (<5%) og tilfeldig

Tap av data og representasjon

Slett en kolonne

Det meste av kolonnen er tom (>60 %)

tap av informasjon

Gjennomsnittlig/median fyll

Numerisk, mangler tilfeldig

Det reduserer variansen og forvrenger fordelingen

Kategori "ukjent"

Kategorisk, systematisk mangler

Genererer tilleggskategorier

Prediksjon med modell

Kompleks, dyrebar kolonne

Lekkasjerisiko, kompleksitet

Kritisk poeng: imputasjonsverdien skal kun beregnes fra treningsdataene og den samme verdien skal brukes på testdataene. Hvis du inkluderer gjennomsnittet av testdataene, skaper du lekkasje (enhet 10). Medianen (midtverdien av ordinære data) foretrekkes ofte fremfor gjennomsnittet fordi det er mer robust overfor uteliggere enn gjennomsnittet.

Outliers: feil eller ekte?

En uteligger kan være én av to ting: en datafeil (999 i alderskolonnen) eller en reell, men sjelden hendelse (en kundes ordre på 2 millioner dollar). Å forvirre de to er katastrofalt: slett en ekte uteligger og du kaster viktig informasjon; Hvis du gir slipp på en feil, vil gjennomsnittene dine lide. Derfor er det nødvendig å undersøke uteliggeren først, ikke å slette den automatisk.

Vanlige deteksjonsmetoder: IQR-metode (interkvartilområde; verdier som er mer enn 1,5 ganger forskjellen mellom 25 % og 75 % kvintiler av dataene regnes som uteliggere) og z-score (antall standardavvik fra gjennomsnittet en verdi er; vanligvis en uteligger hvis den er større enn 3). AI skriver koden for disse beregningene på sekunder; Men før du sier "slett", sjekk hva disse verdiene er.

Type- og formatkonvertering: stille feilkilde

En av de mest hodepine er datatypeforvirring. Hvis en "beløp"-kolonne er lagret som tekst, kan du ikke legge til; Programmet leser feil et tyrkisk formatert tall som "1 250,50" i stedet for "ett tusen to hundre og femti". Datoer ("01/03/2024" dag-måned eller måned-dag?), kategorier ("Mann"/"mannlig"/"M" er det samme?) og enheter (TL eller kuruş?) gir uriktige resultater. En stor del av oppryddingen er å trekke disse inkonsekvensene inn i standarden: datoer i ett format, kategorier i én stavemåte, tall i én enhet.

tre minisaker

Tilfelle 1 - Den gjennomsnittlige fellen. Et team fylte ut de 320 manglende verdiene i inntektskolonnen med gjennomsnittet ($48 500). Men manglene var systematiske: Dette var lavinntektssegmentet som aldri hadde oppgitt inntekt. Gjennomsnittlig fylling gjorde denne gruppen kunstig rik og kredittmodellen var feil. Leksjon: spør "hvorfor er det tomt" før du fyller det ut.

Tilfelle 2 — Outlier som ikke bør slettes. En detaljhandelsanalytiker slettet 4 enorme bestillinger (1,8 millioner TL hver) i salgsdataene, og trodde de var "feil". Dette var imidlertid reelle bedriftsordrer og utgjorde 22 % av den totale omsetningen. Prognosemodellen etter sletting savnet fullstendig institusjonell etterspørsel. Leksjon: undersøk uteliggeren før du sletter den.

Tilfelle 3 — Datoformatkatastrofe. I en CSV ble datoene blandet inn i både "2024-03-01" og "01.03.2024". Da koden skrevet av YZ ble analysert i henhold til det første formatet, ble 6400 linjer NaT som "ugyldig dato" og ble stille ekskludert fra analyse. Analytikeren la først merke til dette da antallet linjer gikk ned. Leksjon: sjekk alltid antall linjer og tomme etter konvertering.

Fire kopierbare maler

1) Manglende verdikart:

Jeg har pandaer df. Skriv kode som produserer en tabell som viser antall og prosentandel av manglende (NaN) for hver kolonne. List deretter opp kolonnene med en manglende andel på over 40 % og de med en manglende andel under 5 % separat. Bare generer denne diagnosekoden, ikke hvilken strategi du foreslår; Jeg tar avgjørelsen.

2) Ytterligere inspeksjon (ikke sletting):

Skriv kode som OPPVISER (ikke sletter!) uteliggere for min "beløp"-kolonne ved å bruke IQR-metoden. Sett de utliggende radene i en egen df slik at jeg kan undersøke dem manuelt. Skriv også ut antall utliggere og deres andel av totalen.

3) Standardisering av type/format:

Skriv kode som standardiserer følgende kolonner:- "dato": kan være blandede formater ("2024-03-01" og "01.03.2024"); konverter dem alle til datetime, tell de uoversettelige og rapporter (kast bort lydløst). - "kjønn": "Mann"/"mann"/"M" -> "M", "Kvinne"/"kvinne"/"F" -> "K". - "beløp": tyrkisk formatert tekst ("1.250,50") -> desimaltall. Skriv ut hvor mange rader som er berørt etter hver konvertering.

4) Sjekk før/etter rengjøring:

Skriv kode som sammenligner df.shape, manglende antall og sammendragsstatistikk (gjennomsnitt, median, min, maks) for utvalgte kolonner før og etter et oppryddingstrinn. Formål: å se hva rengjøringen endrer.

Svak forespørsel / Sterk forespørsel

Svak melding:

Fjern disse dataene.

"Klar" er tvetydig; AI vet ikke hvilke manglende deler som skal slettes, hva som skal fylles ut, hvilken kolonne som skal behandles og hvordan. Resultatet: blinde, irreversible endringer.

Kraftig ledetekst:

Din rolle: assistent for datarensing. df-kolonner: kunde_id (int), registreringsdato (tekst i blandet format), inntekter_tl (tekst, "1 200,00"), by (tekst, inkonsekvent stavemåte). Regler:- Endring av original df; Arbeid med kopien som heter df_clean.- Konverter inntekt_tl til tall, tell det som ikke kan oversettes.- Endre record_date til datetime, rapporter feilen.- Ikke slett noen rader uten min godkjenning; Vis kandidatene hver for seg. Etter hvert trinn, skriv ut df_temiz.shape og det manglende nummeret.

Her er kilden beskyttet, hver transformasjon telles, sletting er overlatt til mennesket.

Vanlige feil

  • Fylle ut hullene uten å spørre "hvorfor er det tomt?" Å fylle ut systematisk/signifikant mangler med gjennomsnittet forvrenger dataene.
  • Slette uteliggeren uten å undersøke den. Å forkaste reelle, men sjeldne hendelser ødelegger viktig informasjon.
  • Beregner utfyllingsverdien fra alle data. Inkludering av testdata skaper lekkasje; bare regn ut fra trening.
  • Kontrollerer ikke antall rader/blanketter etter konvertering. Rader som er stille NaT/NaN er ekskludert fra analyse.
  • Overskriver de originale dataene. Retur og reproduserbarhet går tapt.
Tips: Kjør rensingen med en "før-etter"-sammenligning. Skriv ut df.shape, manglende antall og sammendragsstatistikk for kritiske kolonner etter hvert trinn. Så du ser umiddelbart at ett trinn uventet ødelegger 6000 rader.

Oppsummert

Rensing er den mest tidkrevende og beslutningskrevende fasen av datavitenskap. Hver endring endrer dataene, så hver enkelt er en bevisst beslutning. For manglende verdier, spør "hvorfor er den tom?" Gå gjennom eventuelle uteliggere før du sletter dem; Sett type og format til standard. Beregn fyllverdien bare fra treningsdataene, behold originalen og spor virkningen av hvert trinn ved å telle det. AI er en enorm akselerator i denne bransjen, men mennesker bestemmer hva du renser og hvorfor.

Søknadsoppgave

Ta (eller lag) en liten tabell og sett inn tre oppgaver bevisst i den: en manglende verdituppel, en uteligger, et blandet datoformat. Be om diagnose og standardiseringskode fra AI med malene ovenfor; sammenligne antall rader og blanks før/etter hvert trinn. Prøv å fange minst ett "stille tap" og legg merke til hvordan du la merke til det.

sjekkliste

  • [ ] Beholdt jeg de originale rådataene og arbeidet med kopien?
  • [ ] Har jeg stilt spørsmålet "hvorfor er det tomt" for hver manglende kolonne?
  • [ ] Har jeg vurdert uteliggere før jeg slettet dem?
  • [ ] Har jeg beregnet utfyllingsverdien kun fra treningsdata?
  • [ ] Sjekker jeg antall linjer/blanketter etter hvert trinn og eliminerer stille tap?