Oppikaa tekoälyä Pythonilla · Oppitunti

EDA-työnkulku ja datan profilointi

df.info(), df.describe(), puuttuvien arvojen tarkistus, tietotyyppien tarkistus ja kardinaliteettianalyysi.

Oppitunti 1/413 vaihetta

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 rows

df.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  float64

df.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:

  • shape ja head() koon ja esikatselun tarkistamiseen
  • info() dtype-tyyppien ja ei-tyhjien arvojen määrien tarkistamiseen
  • describe() numeerisiin yhteenvetoihin ja poikkeavien arvojen vihjeisiin
  • isnull().sum() puuttuvien arvojen tarkistamiseen
  • duplicated().sum() kaksoiskappalerivien etsimiseen
  • value_counts() ja nunique() kategorioiden esiintymistiheyksien ja kardinaliteetin tarkistamiseen

Seuraavaksi tarkastelette yksittäisiä sarakkeita yksiulotteisen analyysin avulla.

Aloita maksutta

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

  1. EDA-työnkulku ja datan profilointi
  2. Yksiulotteinen analyysi
  3. Kaksi- ja moniulotteinen analyysi
  4. Piirteiden jakauman ja kohdemuuttujan analyysi
← Takaisin: Oppikaa tekoälyä Pythonilla