Enhet 3 / 11

Datarensning och förbearbetning: saknat värde, extremvärde och typkonvertering

Vinster:

  • Förmåga att särskilja orsaken till saknade värden (slumpmässigt, systematiskt, meningsfullt) och välja lämplig strategi och beräkna fyllningsvärdet från enbart träning
  • Möjlighet att undersöka extremvärden innan de raderas och skilja mellan ett datafel och en sann sällsynt händelse
  • Möjlighet att förhindra tyst förlust genom att övervaka effekten av varje steg på antalet rader/blanketter samtidigt som typ- och formatinkonsekvenser till standarden

Ungefär 60-80 procent av en datavetares tid går till städning; Inom branschen kallas detta halvt på skämt för "datawrangling" (datagräsling eller datarensning). Eftersom verkliga data nästan aldrig är redo för analys: datum är i blandade format, siffror lagras som text, vissa celler är tomma, en kund visas tre gånger i samma tabell med två olika stavningar. I den här enheten kommer vi att täcka tre grundläggande aspekter av rensning: saknade värden, extremvärden och typ/formatkonvertering. Artificiell intelligens är en utomordentligt snabb assistent i detta arbete; Men det är du som bestämmer vad som ska städas och hur, eftersom varje städval förändrar analysen.

Städningens gyllene regel: varje förändring är ett beslut

Ta bort en cell, fylla i ett saknat värde med medelvärdet, trimma en extremvärde – ingen av dessa är "neutrala" operationer. Var och en ändrar data och påverkar resultatet. Så den gyllene regeln för rensning: skriv varje ändring i koden, notera logiken, skriv aldrig över originaldata. AI:n ger dig snabb rensningskod, men det är ditt ansvar att förstå vad den koden gör; Kör det inte utan att se hur många rader som är borta när du säger "ta bort tomma rader".

Varning: Ändra aldrig de ursprungliga rådata. Skriv den rensade versionen till en separat fil/tabell. På så sätt, om du upptäcker ett fel, kan du gå tillbaka till ruta ett och behålla reproducerbarheten.

Saknade värden: varför är det tomt, vad ska man göra

Ett saknat värde (som vanligtvis visas som NaN — "Inte ett nummer" i pandor) är när en cell är tom. Men orsaken till gapet bestämmer lösningen. Det finns tre typiska situationer. Slumpmässigt saknas: sensorn fungerade inte ett ögonblick; Det kan vara rimligt att fylla i. Systematisk saknas: ett formulärfält efterfrågas endast för vissa kunder; Gapet här är faktiskt information. Betydande saknas: om "returdatum" är tomt återvände inte kunden; Detta mellanslag betyder 0 eller "ingen", det är inte ifyllt.

Huvudstrategier:

Strategi

När är det lämpligt?

risk

Ta bort rad

Missing rate är mycket låg (<5%) och slumpmässig

Förlust av data och representation

Ta bort en kolumn

Det mesta av kolumnen är tom (>60 %)

förlust av information

Genomsnittlig/medianfyllning

Numerisk, saknas slumpmässigt

Det minskar variansen och förvränger fördelningen

Kategori "okänt"

Kategorisk, systematisk saknad

Genererar ytterligare kategorier

Förutsägelse med modell

Komplex, dyrbar kolumn

Risk för läckage, komplexitet

Kritisk punkt: imputeringsvärdet bör endast beräknas från träningsdata och samma värde bör tillämpas på testdata. Om du inkluderar medelvärdet av testdata skapar du läckage (enhet 10). Medianen (mellanvärdet för ordinaldata) föredras ofta framför medelvärdet eftersom det är mer robust mot extremvärden än medelvärdet.

Outliers: fel eller verkligt?

En extremvärde kan vara en av två saker: ett datafel (999 i ålderskolumnen) eller en verklig men sällsynt händelse (en kunds order på 2 miljoner USD). Att blanda ihop de två är katastrofalt: ta bort en sann avvikare och du slänger viktig information; Om du släpper ett misstag kommer dina medelvärden att lida. Därför är det nödvändigt att undersöka extremvärdet först, inte att radera det automatiskt.

Vanliga detektionsmetoder: IQR-metod (interkvartilintervall; värden som är mer än 1,5 gånger skillnaden mellan 25 % och 75 % kvintiler av data betraktas som extremvärden) och z-poäng (antalet standardavvikelser från medelvärdet som ett värde är; vanligtvis en extremvärde om den är större än 3). AI skriver koden för dessa beräkningar på sekunder; Men innan du säger "ta bort", kontrollera vad dessa värden är.

Typ- och formatkonvertering: tyst felkälla

En av de mest huvudvärk är datatypsförvirring. Om en kolumn "belopp" lagras som text kan du inte lägga till; Programmet läser felaktigt ett turkiskt formaterat tal som "1 250,50" istället för "ett tusen tvåhundrafemtio". Datum ("01/03/2024" dag-månad eller månad-dag?), kategorier ("Man"/"man"/"M" är samma sak?) och enheter (TL eller kuruş?) ger tyst felaktiga resultat. En stor del av att städa upp är att dra in dessa inkonsekvenser i standarden: datum i ett format, kategorier i en stavning, siffror i en enhet.

tre minifodral

Fall 1 — Den genomsnittliga fällan. Ett lag fyllde i de 320 saknade värdena i inkomstkolumnen med genomsnittet ($48 500). Men bristerna var systematiska: det var låginkomstsegmentet som aldrig hade deklarerat inkomst. Genomsnittlig fyllning gjorde denna grupp artificiellt rik och kreditmodellen var fel. Lektion: fråga "varför är det tomt" innan du fyller i det.

Fall 2 — Outlier som inte bör raderas. En detaljhandelsanalytiker tog bort 4 enorma beställningar (1,8 miljoner TL vardera) i försäljningsdata, och trodde att de var "fel". Det rörde sig dock om riktiga företagsorder och utgjorde 22 % av den totala omsättningen. Prognosmodellen efter raderingen missade helt den institutionella efterfrågan. Lektion: undersök avvikelsen innan du tar bort den.

Fall 3 — Datumformatkatastrof. I en CSV blandades datumen till både "2024-03-01" och "01.03.2024". När koden skriven av YZ analyserades enligt det första formatet, blev 6 400 rader NaT som "ogiltigt datum" och uteslöts tyst från analysen. Det märkte analytikern först när antalet rader minskade. Lektion: kontrollera alltid antalet rader och blanksteg efter konvertering.

Fyra kopierbara mallar

1) Värdekarta saknas:

Jag har pandor df. Skriv kod som ger en tabell som visar antalet och procentandelen saknade (NaN) för varje kolumn. Lista sedan separat kolumnerna med en saknad andel som överstiger 40 % och de med en saknad andel under 5 %. Generera bara den här diagnoskoden, inte vilken strategi du föreslår; Jag kommer att fatta beslutet.

2) Avvikande inspektion (ej radering):

Skriv kod som DETEKTERAR (inte tar bort!) extremvärden för min kolumn "belopp" med IQR-metoden. Lägg de yttre raderna i en separat df så jag kan manuellt undersöka dem. Skriv även ut antalet extremvärden och deras andel av totalen.

3) Typ/format standardisering:

Skriv kod som standardiserar följande kolumner:- "datum": kan vara blandade format ("2024-03-01" och "01.03.2024"); konvertera dem alla till datetime, räkna de oöversättbara och rapportera (släng i tysthet). - "gender": "Mane"/"mane"/"M" -> "M", "Female"/"female"/"F" -> "K". - "belopp": Turkisk formaterad text ("1.250,50") -> decimaltal. Skriv ut hur många rader som påverkas efter varje konvertering.

4) Kontrollera före/efter rengöring:

Skriv kod som jämför df.shape, saknat antal och sammanfattande statistik (medelvärde, median, min, max) för valda kolumner före och efter ett rensningssteg. Syfte: att se vad rengöring förändrar.

Svag prompt / Stark prompt

Svag uppmaning:

Rensa denna data.

"Clear" är tvetydig; AI vet inte vilka delar som saknas som ska raderas, vad som ska fyllas i, vilken kolumn som ska bearbetas och hur. Resultatet: blinda, oåterkalleliga förändringar.

Kraftfull uppmaning:

Din roll: datarensningsassistent. df-kolumner: kund_id (int), registreringsdatum (text i blandat format), revenue_tl (text, "1 200,00"), stad (text, inkonsekvent stavning). Regler:- Ändra original df; Arbeta med kopian som heter df_clean.- Konvertera inkomst_tl till nummer, räkna det som inte kan översättas.- Ändra record_date till datetime, rapportera felet.- Ta inte bort några rader utan mitt godkännande; Visa kandidaterna separat. Efter varje steg, skriv ut df_temiz.shape och det saknade numret.

Här är källan skyddad, varje transformation räknas, radering lämnas till människan.

Vanliga misstag

  • Att fylla i luckorna utan att fråga "varför är det tomt?" Att fylla i systematisk/signifikant saknad med medelvärdet förvränger data.
  • Ta bort extremvärdet utan att undersöka det. Att kassera verkliga men sällsynta händelser förstör viktig information.
  • Beräknar utfyllnadsvärdet från alla data. Att inkludera testdata skapar läckage; bara räkna från träning.
  • Kontrollerar inte antalet rader/tomter efter konvertering. Rader som är tysta NaT/NaN exkluderas från analys.
  • Skriver över originaldata. Retur och reproducerbarhet går förlorad.
Tips: Kör rengöringen med en "före-efter"-jämförelse. Skriv ut df.shape, saknat antal och sammanfattande statistik för kritiska kolumner efter varje steg. Så du ser direkt att ett steg oväntat förstör 6 000 rader.

Sammanfattningsvis

Rengöring är den mest tidskrävande och beslutskrävande fasen av datavetenskap. Varje förändring förändrar data, så var och en är ett medvetet beslut. För saknade värden, fråga "varför är det tomt?" Granska eventuella extremvärden innan du tar bort dem; Ta typ och format till standard. Beräkna fyllningsvärdet endast utifrån träningsdata, behåll originalet och spåra effekten av varje steg genom att räkna det. AI är en enorm accelerator i den här branschen, men människor bestämmer vad du rengör och varför.

Applikationsuppgift

Ta (eller skapa) en liten tabell och infoga medvetet tre problem i den: en tuppel som saknas värde, en extremvärde, ett blandat datumformat. Begär diagnos och standardiseringskod från AI med ovanstående mallar; jämför antal rader och blanksteg före/efter varje steg. Försök att fånga minst en "tyst förlust" och notera hur du märkte det.

checklista

  • [ ] Behöll jag originaldata och arbetade med kopian?
  • [ ] Har jag ställt frågan "varför är den tom" för varje saknad kolumn?
  • [ ] Granskade jag extremvärden innan jag tog bort dem?
  • [ ] Beräknade jag utfyllnadsvärdet endast utifrån träningsdata?
  • [ ] Kontrollerar jag antalet rader/tomter efter varje steg och eliminerar tyst förlust?