Vienetas 3 / 11

Duomenų valymas ir išankstinis apdorojimas: trūksta vertės, iškrypimo ir tipo konvertavimo

Pelnas:

  • Gebėjimas atskirti trūkstamų reikšmių priežastį (atsitiktinė, sisteminė, prasminga) ir pasirinkti tinkamą strategiją bei apskaičiuoti užpildymo vertę vien iš treniruočių.
  • Galimybė prieš juos ištrinant išnagrinėti iškrypimus ir atskirti duomenų klaidą nuo tikro reto įvykio
  • Galimybė užkirsti kelią tyliam praradimui stebint kiekvieno žingsnio įtaką eilučių / tuščių vietų skaičiui, tuo pačiu padidinant tipo ir formato neatitikimus standartui

Maždaug 60–80 procentų duomenų mokslininko laiko tenka valymui; Pramonėje tai pusiau juokais vadinama „data wrangling“ (data wrangling arba duomenų valymas). Kadangi realūs duomenys beveik niekada nėra paruošti analizei: datos pateikiamos mišriais formatais, skaičiai saugomi kaip tekstas, kai kurie langeliai tušti, klientas toje pačioje lentelėje pasirodo tris kartus su dviem skirtingomis rašybomis. Šiame skyriuje apžvelgsime tris pagrindinius valymo aspektus: trūkstamas reikšmes, išskirtines vertes ir tipo / formato konvertavimą. Dirbtinis intelektas yra nepaprastai greitas pagalbininkas šiame darbe; Bet ką ir kaip valyti sprendžiate jūs, nes kiekvienas valymo pasirinkimas keičia analizę.

Auksinė valymo taisyklė: kiekvienas pakeitimas yra sprendimas

Ląstelės ištrynimas, trūkstamos reikšmės užpildymas vidurkiu, nuokrypio apkarpymas – nė viena iš šių operacijų nėra „neutrali“. Kiekvienas keičia duomenis ir įtakoja rezultatą. Taigi auksinė valymo taisyklė: kiekvieną pakeitimą įrašykite į kodą, atkreipkite dėmesį į pagrindimą, niekada neperrašykite pradinių duomenų. AI suteikia jums greitą valymo kodą, tačiau jūs turite suprasti, ką tas kodas daro; Nepaleiskite jos nepamatę, kiek eilučių nebeliko, kai sakote „ištrinti tuščias eilutes“.

Įspėjimas: Niekada nekeiskite pradinių neapdorotų duomenų. Įrašykite išvalytą versiją į atskirą failą / lentelę. Tokiu būdu, jei pastebėsite klaidą, galėsite grįžti į pradinę padėtį ir išlaikyti atkuriamumą.

Trūkstamos reikšmės: kodėl tuščia, ką daryti

Trūksta reikšmės (paprastai rodoma kaip NaN – „Ne skaičius“ pandose) yra tada, kai langelis tuščias. Tačiau spragos priežastis lemia sprendimą. Yra trys tipinės situacijos. Atsitiktinai trūksta: jutiklis neveikė akimirką; Gali būti tikslinga jį užpildyti. Sistemiškai trūksta: formos laukas prašomas tik tam tikriems klientams; Čia spraga iš tikrųjų yra informacija. Trūksta reikšmingai: jei „grąžinimo data“ yra tuščias, klientas negrąžino; Ši vieta reiškia 0 arba „nėra“, ji neužpildyta.

Pagrindinės strategijos:

strategija

Kada tai tinkama?

rizika

Ištrinti eilutę

Trūkstamumo rodiklis yra labai mažas (<5 %) ir atsitiktinis

Duomenų ir reprezentacijos praradimas

Ištrinti stulpelį

Didžioji stulpelio dalis tuščia (>60 %)

informacijos praradimas

Vidutinis / vidutinis užpildymas

Skaičiai, trūksta atsitiktinai

Tai sumažina dispersiją ir iškraipo pasiskirstymą

Kategorija "nežinoma"

Trūksta kategoriško, sistemingo

Sugeneruoja papildomas kategorijas

Numatymas su modeliu

Sudėtinga, brangi kolona

Nutekėjimo rizika, sudėtingumas

Kritinis taškas: priskyrimo vertė turėtų būti apskaičiuojama tik iš mokymo duomenų ir ta pati vertė turėtų būti taikoma bandymo duomenims. Jei įtrauksite bandymo duomenų vidurkį, sukursite nuotėkį (10 skyrius). Medianai (vidutinė eilės duomenų reikšmė) dažnai teikiama pirmenybė, o ne vidurkis, nes ji yra labiau atspari nuokrypiams nei vidurkis.

Nukrypimai: klaida ar tikra?

Nukrypimas gali būti vienas iš dviejų dalykų: duomenų klaida (amžiaus stulpelyje 999) arba tikras, bet retas įvykis (kliento užsakymas už 2 mln. USD). Abu supainiojimas yra pražūtingas: ištrinkite tikrą nuokrypį ir išmeskite svarbią informaciją; Jei atleisite klaidą, nukentės jūsų vidurkiai. Todėl pirmiausia reikia išnagrinėti iškrypimą, o ne jį ištrinti automatiškai.

Įprasti aptikimo metodai: IQR metodas (tarpkvartilinis diapazonas; vertės, kurios yra daugiau nei 1,5 karto didesnės už 25% ir 75% duomenų kvintilių skirtumą, laikomos išskirtinėmis vertėmis) ir z balas (standartinių nuokrypių skaičius nuo vidutinės vertės yra; paprastai yra nuokrypis, jei jis didesnis nei 3). AI įrašo šių skaičiavimų kodą per sekundes; Tačiau prieš sakydami „ištrinti“, patikrinkite, kokios tos reikšmės.

Tipo ir formato konvertavimas: tylus klaidų šaltinis

Vienas iš labiausiai galvos skausmų yra duomenų tipo painiava. Jei stulpelis „suma“ saugomas kaip tekstas, pridėti negalite; Programa neteisingai nuskaito turkiško formato skaičių, pvz., „1 250,50“, o ne „tūkstantis du šimtai penkiasdešimt“. Datos ("01/03/2024" diena-mėnuo ar mėnuo-diena?), kategorijos ("Vyras"/"vyras"/"M" yra tas pats?) ir vienetai (TL ar kuruş?) tyliai pateikia neteisingus rezultatus. Didelė valymo dalis yra šių neatitikimų įtraukimas į standartą: datos į vieną formatą, kategorijos į vieną rašybą, skaičiai į vieną vienetą.

trys mini dėklai

1 atvejis – vidutiniai spąstai. Komanda užpildė 320 trūkstamų verčių pajamų stulpelyje su vidurkiu (48 500 USD). Tačiau trūkumai buvo sistemingi: tai buvo mažas pajamas gaunantis segmentas, kuris niekada nedeklaravo pajamų. Vidutinis užpildymas padarė šią grupę dirbtinai turtingą, o kredito modelis buvo klaidingas. Pamoka: prieš pildydami paklauskite „kodėl jis tuščias“.

2 atvejis – nukrypimas, kurio nereikėtų ištrinti. Mažmeninės prekybos analitikas iš pardavimo duomenų išbraukė 4 didžiulius užsakymus (po 1,8 mln. Lt), manydamas, kad tai „klaidos“. Tačiau tai buvo realūs įmonių užsakymai ir sudarė 22% visos apyvartos. Prognozės po ištrynimo modelis visiškai nepaisė institucinės paklausos. Pamoka: prieš ištrindami ištirkite nuokrypį.

3 atvejis – datos formato nelaimė. CSV faile datos buvo sumaišytos su „2024-03-01“ ir „01.03.2024“. Kai YZ parašytas kodas buvo išanalizuotas pagal pirmąjį formatą, 6400 eilučių tapo NaT kaip "negaliojančia data" ir buvo tyliai pašalintos iš analizės. Analitikas tai pastebėjo tik sumažėjus eilučių skaičiui. Pamoka: po konvertavimo visada patikrinkite eilučių ir tuščių vietų skaičių.

Keturi kopijuojami šablonai

1) Trūksta verčių žemėlapio:

Turiu pandas df. Parašykite kodą, kuris sukuria lentelę, rodančią trūkstamų (NaN) skaičių ir procentą kiekviename stulpelyje. Tada atskirai išvardykite stulpelius, kurių trūkstamas rodiklis viršija 40 %, ir stulpelius, kurių trūkstamas rodiklis yra mažesnis nei 5 %. Tiesiog generuokite šį diagnostikos kodą, o ne kokią strategiją siūlote; Aš priimsiu sprendimą.

2) Išskirtinis patikrinimas (neišbrauktas):

Naudodami IQR metodą, parašykite kodą, kuris aptinka (ne naikina!) mano stulpelio „suma“ nuokrypius. Kraštines eilutes įdėkite į atskirą df, kad galėčiau jas rankiniu būdu išnagrinėti. Taip pat atspausdinkite nuokrypių skaičių ir jų dalį bendroje sumoje.

3) Tipo / formato standartizavimas:

Parašykite kodą, kuris standartizuoja šiuos stulpelius:- "data": gali būti mišrių formatų ("2024-03-01" ir "01.03.2024"); konvertuokite juos į datos laiką, suskaičiuokite neišverčiamus ir praneškite (tyliai išmeskite). - "lytis": "Vyras"/"vyras"/"M" -> "M", "Moteris"/"moteris"/"F" -> "K". - "suma": turkiško formato tekstas ("1.250,50") -> dešimtainis skaičius. Atspausdinkite, kiek eilučių paveikiama po kiekvienos konversijos.

4) Patikrinkite prieš / po valymo:

Parašykite kodą, kuris palygina pasirinktų stulpelių df.shape, trūkstamą skaičių ir suvestinę statistiką (vidurkis, mediana, min, max) prieš ir po valymo etapo. Tikslas: pamatyti, kaip keičiasi valymas.

Silpnas raginimas / Stiprus raginimas

Silpnas raginimas:

Išvalyti šiuos duomenis.

„Aišku“ yra dviprasmiškas; AI nežino, kurias trūkstamas dalis reikia ištrinti, ką užpildyti, kurį stulpelį apdoroti ir kaip. Rezultatas: akli, negrįžtami pokyčiai.

Galingas raginimas:

Jūsų vaidmuo: duomenų valymo asistentas. df stulpeliai: kliento_id (int), registracijos_data (mišraus formato tekstas), pajamų_tl (tekstas, "1 200,00"), miestas (tekstas, nenuosekli rašyba). Taisyklės: - Originalo df keitimas; Dirbkite su kopija pavadinimu df_clean.- Konvertuokite pajamų_tl į skaičių, suskaičiuokite tai, ko negalima išversti.- Pakeiskite įrašo_datą į datetime, praneškite apie klaidą.- Neištrinkite jokių eilučių be mano sutikimo; Parodykite kandidatus atskirai. Po kiekvieno veiksmo atspausdinkite df_temiz.shape ir trūkstamą skaičių.

Čia šaltinis saugomas, kiekviena transformacija skaičiuojama, ištrynimas paliekamas žmogui.

Dažnos klaidos

  • Spragų pildymas neklausiant "kodėl tuščia?" Sisteminio / reikšmingo trūkumo užpildymas vidurkiu iškraipo duomenis.
  • Nukrypimo ištrynimas jo neišnagrinėjus. Tikrų, bet retų įvykių atmetimas sunaikina svarbią informaciją.
  • Iš visų duomenų apskaičiuojama užpildymo vertė. Bandymo duomenų įtraukimas sukuria nuotėkį; tiesiog paskaičiuok iš treniruotės.
  • Po konvertavimo netikrinamas eilučių / tuščių laukų skaičius. Eilutės, kurios tyliai yra NaT / NaN, neįtraukiamos į analizę.
  • Pradinių duomenų perrašymas. Prarandama grąža ir atkuriamumas.
Patarimas: atlikite valymą palygindami „prieš-po“. Po kiekvieno veiksmo atspausdinkite df.shape, trūkstamą skaičių ir svarbiausių stulpelių statistikos santrauką. Taigi iškart matote, kad vienas žingsnis netikėtai sunaikina 6000 eilučių.

Apibendrinant

Valymas yra daugiausiai laiko ir sprendimų reikalaujantis duomenų mokslo etapas. Kiekvienas pakeitimas keičia duomenis, todėl kiekvienas yra sąmoningas sprendimas. Jei trūksta verčių, paklauskite „kodėl jis tuščias? Peržiūrėkite visus nukrypimus prieš juos ištrindami; Pritaikykite tipą ir formatą į standartą. Apskaičiuokite užpildymo vertę tik pagal mokymo duomenis, išsaugokite originalą ir stebėkite kiekvieno žingsnio poveikį jį skaičiuodami. AI yra didžiulis šio verslo greitintuvas, tačiau žmonės nusprendžia, ką ir kodėl valyti.

Taikymo užduotis

Paimkite (arba sukurkite) nedidelę lentelę ir sąmoningai įterpkite į ją tris problemas: trūkstamą reikšmių eilutę, nuokrypį, mišrų datos formatą. Prašyti diagnozės ir standartizacijos kodo iš AI naudodami aukščiau nurodytus šablonus; palyginkite eilučių ir blankų skaičių prieš / po kiekvieno žingsnio. Pasistenkite pagauti bent vieną „tylią netektį“ ir atkreipkite dėmesį, kaip tai pastebėjote.

kontrolinis sąrašas

  • [ ] Ar pasilikau pirminius neapdorotus duomenis ir dirbau su kopija?
  • [ ] Ar uždaviau klausimą „kodėl jis tuščias“ kiekvienam trūkstamam stulpeliui?
  • [ ] Ar prieš juos ištrindamas peržiūrėjau nukrypimus?
  • [ ] Ar paminkštinimo vertę apskaičiavau tik pagal treniruočių duomenis?
  • [ ] Ar po kiekvieno veiksmo tikrinu eilučių / tuščių laukelių skaičių ir pašalinu tylų praradimą?