EDA-työnkulku ja datan profilointi
df.info(), df.describe(), puuttuvien arvojen tarkistus, tietotyyppien tarkistus ja kardinaliteettianalyysi.
EDA-työnkulku ja datan profilointi on ilmainen Oppikaa tekoälyä Pythonilla-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Oppikaa tekoälyä Pythonilla-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Oppikaa tekoälyä Pythonilla-kurssilla on yhteensä 4 oppituntia.
Mitä tutkiva data-analyysi on?
Tutkiva data-analyysi (EDA) on ensimmäinen vaihe minkä tahansa aineiston käsittelyssä ennen mallintamista. Sen tavoitteena on ymmärtää rakenne, havaita ongelmat ja muodostaa tuntuma aineistoon.
Jäsennelty EDA:n ensikatsauksen tarkistuslista vastaa seuraaviin kysymyksiin: Kuinka suuri aineisto on? Millaisia sarakkeiden tyypit ovat? Missä on puuttuvia arvoja? Onko kaksoiskappaleita? Miten arvot jakautuvat?
- Havaitkaa aineiston laatuongelmat varhain
- Päättäkää, mitkä ominaisuudet tarvitsevat puhdistamista
- Muodostakaa hypoteeseja myöhemmin testattaviksi
Aineiston lataaminen
Kaikki alkaa DataFrame-olion lataamisesta ja nopeasta vilkaisusta komennoilla head() ja shape.
shape palauttaa (rows, columns)-monikon, joten näette heti käsiteltävän aineiston koon.
import pandas as pd
df = pd.read_csv("customers.csv")
print(df.shape) # (10000, 8)
print(df.head()) # first 5 rowsdf.info() — Tyypit ja ei-tyhjien arvojen määrät
df.info() on kaikkein hyödyllisin ensimmäinen komento. Se tulostaa jokaisen sarakkeen nimen, sen dtype-tyypin ja ei-tyhjien arvojen määrän.
Jos numeerinen sarake näkyy arvona object, jokin on vialla (ylimääräistä tekstiä, pilkkuja tai valuuttasymboleja). Jos ei-tyhjien arvojen määrät poikkeavat sarakkeittain, aineistossa on puuttuvia arvoja.
df.info()
# <class pandas.DataFrame>
# RangeIndex: 10000 entries
# age 9800 non-null float64
# city 10000 non-null object
# income 9500 non-null float64df.describe() — Numeerinen yhteenveto
df.describe() antaa jokaisesta numeerisesta sarakkeesta count-, mean-, std-, min-, quartile- (25/50/75 %) ja max-arvot.
Etsikää siitä varoitusmerkkejä: ikäsarakkeen min-arvo -1, max-arvo, joka on huomattavasti 75. persentiiliä suurempi (poikkeava arvo), tai keskiarvo, joka poikkeaa paljon mediaanista (vino jakauma).
print(df.describe())
# Use include="all" to also summarize categorical columns
print(df.describe(include="all"))df.isnull().sum() — Puuttuvien arvojen laskeminen
Kun ketjutatte isnull()- ja sum()-komennot, saatte puuttuvien arvojen määrän sarakkeittain. Lisätkää toinen .sum() saadaksenne kokonaismäärän.
Muuntaa tulos prosenttiosuudeksi, jotta voitte arvioida tilanteen vakavuutta: sarake, josta 60 % arvoista puuttuu, kannattaa ehkä poistaa, kun taas 2 %:n puuttuvuus on helppo imputoida.
print(df.isnull().sum())
missing_pct = df.isnull().sum() / len(df) * 100
print(missing_pct.sort_values(ascending=False))df.duplicated().sum() — Kaksoiskappalerivien etsiminen
df.duplicated() palauttaa boolean-tyyppisen Series-sarjan, joka merkitsee aiemman rivin kanssa täysin identtiset rivit. Sen summaaminen kertoo kaksoiskappaleiden määrän.
Voitte rajata kaksoiskappaleiden tarkastelun avainsarakkeisiin parametrilla subset — tästä on hyötyä, kun id-arvon pitäisi olla yksilöllinen.
print(df.duplicated().sum()) # exact duplicate rows
print(df.duplicated(subset=["id"]).sum()) # duplicate ids
df = df.drop_duplicates()value_counts() — Kategorioiden esiintymistiheydet
value_counts() laskee, kuinka usein kukin sarakkeen yksilöllinen arvo esiintyy. Se on ensisijainen työkalu kategoristen muuttujien tarkasteluun.
Käyttäkää parametria normalize=True osuuksien tarkastelemiseen raakamäärien sijaan ja parametria dropna=False puuttuvien arvojen sisällyttämiseen laskelmaan.
print(df["city"].value_counts())
print(df["city"].value_counts(normalize=True))
print(df["city"].value_counts(dropna=False))Kardinaliteetin tarkistaminen
Kardinaliteetti tarkoittaa sarakkeen erilaisten arvojen määrää, jonka saatte komennolla nunique().
- Pieni kardinaliteetti (muutama kategoria) → sopii hyvin one-hot-koodaukseen.
- Suuri kardinaliteetti (tuhansia yksilöllisiä merkkijonoja, kuten käyttäjätunnuksia) → ei yleensä ole sellaisenaan hyödyllinen ominaisuus.
for col in df.select_dtypes("object").columns:
print(col, "->", df[col].nunique(), "unique")Vakio- ja tunnusmaisten sarakkeiden havaitseminen
Profiloinnin aikana kannattaa kiinnittää huomiota kahteen ääripäähän:
- Vakiosarakkeet (
nunique() == 1) eivät sisällä tietoa — poistakaa ne. - Tunnusmaiset sarakkeet (
nunique() == len(df)) ovat rivikohtaisesti yksilöllisiä eivätkä yleensä tuo useimmille malleille hyödyllistä tietoa.
n = len(df)
for col in df.columns:
u = df[col].nunique()
if u == 1:
print(col, "is constant")
elif u == n:
print(col, "is ID-like")dtypes ja muistin käyttö
Tarkistakaa df.dtypes-komennolla, että sarakkeet on tallennettu oikein, ja etsikää raskaat sarakkeet komennolla df.memory_usage(deep=True).
Numeeristen tyyppien downcastaus ja vähän eri arvoja sisältävien merkkijonojen muuntaminen category-tyypiksi voi pienentää suurten aineistojen muistinkulutusta huomattavasti.
print(df.dtypes)
print(df.memory_usage(deep=True))
df["city"] = df["city"].astype("category")Uudelleenkäytettävä profilointikoodinpätkä
Voitte koota koko tarkistuslistan yhdeksi apufunktioksi, jolloin jokainen uusi aineisto käsitellään samalla tavalla ensikatsauksessa.
Suorittakaa se heti, kun lataatte minkä tahansa DataFrame-olion, jotta näette välittömästi koon, tyypit, puuttuvat arvot, kaksoiskappaleet ja kardinaliteetin.
def profile(df):
print("Shape:", df.shape)
print(df.info())
print("Missing:\n", df.isnull().sum())
print("Dupes:", df.duplicated().sum())
for c in df.select_dtypes("object"):
print(c, df[c].nunique(), "unique")
profile(df)Pikatarkistus: puuttuvat arvot
Haluatte kunkin sarakkeen puuttuvien arvojen prosenttiosuuden.
Kertaus: EDA:n ensikatsauksen tarkistuslista
Teillä on nyt toistettava aloitusrutiini mitä tahansa aineistoa varten:
shapejahead()koon ja esikatselun tarkistamiseeninfo()dtype-tyyppien ja ei-tyhjien arvojen määrien tarkistamiseendescribe()numeerisiin yhteenvetoihin ja poikkeavien arvojen vihjeisiinisnull().sum()puuttuvien arvojen tarkistamiseenduplicated().sum()kaksoiskappalerivien etsimiseenvalue_counts()janunique()kategorioiden esiintymistiheyksien ja kardinaliteetin tarkistamiseen
Seuraavaksi tarkastelette yksittäisiä sarakkeita yksiulotteisen analyysin avulla.
Opi Python tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 53
- Oppitunnit
- 225
Usein kysytyt kysymykset
Onko oppitunti ”EDA-työnkulku ja datan profilointi” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Oppikaa tekoälyä Pythonilla-oppimispolun 3 oppituntia, myös oppitunnin “EDA-työnkulku ja datan profilointi”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppikaa tekoälyä Pythonilla-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”EDA-työnkulku ja datan profilointi”?
df.info(), df.describe(), puuttuvien arvojen tarkistus, tietotyyppien tarkistus ja kardinaliteettianalyysi. Harjoittelet Oppikaa tekoälyä Pythonilla-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Oppikaa tekoälyä Pythonilla-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Oppikaa tekoälyä Pythonilla-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.
Kuinka kauan ”EDA-työnkulku ja datan profilointi”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Oppikaa tekoälyä Pythonilla-oppitunnilla?
Kyllä. Jokainen Oppikaa tekoälyä Pythonilla-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- EDA-työnkulku ja datan profilointi
- Yksiulotteinen analyysi
- Kaksi- ja moniulotteinen analyysi
- Piirteiden jakauman ja kohdemuuttujan analyysi