Azkartu esplorazio datuen analisia pandas-profiling liburutegia erabiliz

Datu-multzo berri batekin lan egiten hasteko lehen urratsa ulertzea da. Horretarako, adibidez, aldagaiek onartutako balio-barrutiak ezagutu behar dituzu, haien motak, eta falta diren balio-kopurua ere ezagutu behar duzu.

Pandas liburutegiak tresna erabilgarriak eskaintzen dizkigu esplorazio-datuen analisia (EDA) egiteko. Baina erabili aurretik, normalean funtzio orokorragoekin hasi behar duzu, hala nola df.describe(). Hala ere, kontuan izan behar da funtzio horiek eskaintzen dituzten gaitasunak mugatuak direla, eta EDA egitean edozein datu-multzoekin lan egiteko hasierako faseak askotan elkarren oso antzekoak direla.

Azkartu esplorazio datuen analisia pandas-profiling liburutegia erabiliz

Gaur argitaratzen dugun materialaren egileak dio ez dela ekintza errepikakorrak egiteko zalea. Ondorioz, esplorazio-datuen analisia azkar eta eraginkorrean egiteko tresnen bila, liburutegia aurkitu zuen panda-profilak. Bere lanaren emaitzak ez dira adierazle indibidual batzuen moduan adierazten, baizik eta harekin hurbilagotik lan egiten hasi aurretik jakin behar duzun aztertutako datuei buruzko informazio gehiena biltzen duen HTML txosten nahiko zehatz baten moduan.

Hemen pandas-profiling liburutegia erabiltzearen ezaugarriak ikusiko ditugu Titanic datu multzoa adibide gisa erabiliz.

Esplorazio datuen analisia pandak erabiliz

Titanic datu-multzoan panda-profilarekin esperimentatzea erabaki nuen, dituen datu mota desberdinak eta bertan falta diren balioak daudelako. Uste dut panda-profiling liburutegia bereziki interesgarria dela datuak oraindik garbitu ez diren eta bere ezaugarrien arabera prozesatu gehiago behar duten kasuetan. Prozesamendu hori arrakastaz burutzeko, nondik hasi eta zeri arreta jarri jakin behar duzu. Hona hemen pandak profilatzeko gaitasunak erabilgarriak.

Lehenik eta behin, datuak inportatzen ditugu eta pandak erabiltzen ditugu estatistika deskribatzaileak lortzeko:

# ΠΈΠΌΠΏΠΎΡ€Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²
import pandas as pd
import pandas_profiling
import numpy as np

# ΠΈΠΌΠΏΠΎΡ€Ρ‚ Π΄Π°Π½Π½Ρ‹Ρ…
df = pd.read_csv('/Users/lukas/Downloads/titanic/train.csv')

# вычислСниС ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ статистики
df.describe()

Kode zati hau exekutatu ondoren, hurrengo irudian agertzen dena lortuko duzu.

Azkartu esplorazio datuen analisia pandas-profiling liburutegia erabiliz
Pandas tresna estandarrak erabiliz lortutako estatistika deskribatzailea

Hemen informazio baliagarri asko dagoen arren, ez du jasotzen aztergai dauden datuei buruz jakiteko interesgarria litzatekeen guztia. Adibidez, datu-marko batean, egitura batean, pentsa liteke DataFrame, 891 lerro daude. Hau egiaztatu behar bada, beste kode lerro bat behar da markoaren tamaina zehazteko. Kalkulu hauek baliabideen erabilera berezia ez duten arren, denbora guztian errepikatzeak datuak garbitzen hobeto gastatu daitekeen denbora galduko du.

Esplorazio datuen analisia panda-profila erabiliz

Orain egin dezagun gauza bera pandas-profiling erabiliz:

pandas_profiling.ProfileReport(df)

Goiko kode-lerroa exekutatzen baduzu, datu esploratzaileak aztertzeko adierazleekin txosten bat sortuko da. Goian erakusten den kodeak aterako ditu aurkitutako datuak, baina norbaiti erakusteko HTML fitxategi bat atera dezakezu, adibidez.

Txostenaren lehen zatiak Orokorra atal bat izango du, datuei buruzko oinarrizko informazioa emanez (behaketa kopurua, aldagai kopurua, etab.). Alerta zerrenda bat ere edukiko du, analistari arreta berezia jarri beharreko gauzen berri emanez. Alerta hauek datuak garbitzeko ahaleginak nora bideratu ditzakezun argibideak eman ditzakete.

Azkartu esplorazio datuen analisia pandas-profiling liburutegia erabiliz
Txosten orokorraren atala

Aldagaien analisi esploratzailea

Txostenaren Orokorra atalaren azpian aldagai bakoitzari buruzko informazio erabilgarria aurki dezakezu. Besteak beste, aldagai bakoitzaren banaketa deskribatzen duten taula txikiak biltzen dituzte.

Azkartu esplorazio datuen analisia pandas-profiling liburutegia erabiliz
Adinaren zenbakizko aldagaiari buruz

Aurreko adibidean ikus dezakezun bezala, panda-profilak hainbat adierazle erabilgarriak ematen dizkigu, hala nola, falta diren balioen ehunekoa eta kopurua, baita lehen ikusi ditugun estatistika deskriptiboko neurriak ere. Zeren Age zenbakizko aldagaia da, bere banaketa histograma moduan bistaratzeak eskuinerantz okertutako banaketa dugula ondorioztatuko digu.

Aldagai kategoriko bat kontuan hartuta, irteerako emaitzak apur bat desberdinak dira zenbakizko aldagai baterako aurkitutakoen aldean.

Azkartu esplorazio datuen analisia pandas-profiling liburutegia erabiliz
Sexu aldagai kategorikoari buruz

Alegia, batez bestekoa, minimoa eta maximoa aurkitu beharrean, panda-profilak egiteko liburutegiak klase kopurua aurkitu zuen. Zeren Sex β€” aldagai bitar bat, bere balioak bi klaseren bidez adierazten dira.

Kodea nik bezala aztertzea gustatzen bazaizu, baliteke pandas profilak egiteko liburutegiak metrika hauek nola kalkulatzen dituen jakiteko. Horri buruz jakitea, liburutegiaren kodea irekita dagoela eta GitHub-en eskuragarri dagoela kontuan hartuta, ez da hain zaila. Nire proiektuetan kutxa beltzak erabiltzea oso zalea ez naizenez, liburutegiaren iturburu kodeari begiratu bat eman diot. Adibidez, hauxe da zenbakizko aldagaiak prozesatzeko mekanismoa, funtzioak irudikatuta deskribatu_zenbakizko_1d:

def describe_numeric_1d(series, **kwargs):
    """Compute summary statistics of a numerical (`TYPE_NUM`) variable (a Series).
    Also create histograms (mini an full) of its distribution.
    Parameters
    ----------
    series : Series
        The variable to describe.
    Returns
    -------
    Series
        The description of the variable as a Series with index being stats keys.
    """
    # Format a number as a percentage. For example 0.25 will be turned to 25%.
    _percentile_format = "{:.0%}"
    stats = dict()
    stats['type'] = base.TYPE_NUM
    stats['mean'] = series.mean()
    stats['std'] = series.std()
    stats['variance'] = series.var()
    stats['min'] = series.min()
    stats['max'] = series.max()
    stats['range'] = stats['max'] - stats['min']
    # To avoid to compute it several times
    _series_no_na = series.dropna()
    for percentile in np.array([0.05, 0.25, 0.5, 0.75, 0.95]):
        # The dropna() is a workaround for https://github.com/pydata/pandas/issues/13098
        stats[_percentile_format.format(percentile)] = _series_no_na.quantile(percentile)
    stats['iqr'] = stats['75%'] - stats['25%']
    stats['kurtosis'] = series.kurt()
    stats['skewness'] = series.skew()
    stats['sum'] = series.sum()
    stats['mad'] = series.mad()
    stats['cv'] = stats['std'] / stats['mean'] if stats['mean'] else np.NaN
    stats['n_zeros'] = (len(series) - np.count_nonzero(series))
    stats['p_zeros'] = stats['n_zeros'] * 1.0 / len(series)
    # Histograms
    stats['histogram'] = histogram(series, **kwargs)
    stats['mini_histogram'] = mini_histogram(series, **kwargs)
    return pd.Series(stats, name=series.name)

Kode zati hau nahiko handia eta konplexua badirudi ere, benetan ulertzea oso erraza da. Kontua da liburutegiaren iturburu-kodean aldagai motak zehazten dituen funtzio bat dagoela. Liburutegiak zenbakizko aldagai batekin topatu badu, goiko funtzioak ikusten ari ginen neurketak aurkituko ditu. Funtzio honek panda eragiketa estandarrak erabiltzen ditu motako objektuekin lan egiteko Series, bezala series.mean(). Kalkuluen emaitzak hiztegi batean gordetzen dira stats. Histogramak funtzioaren bertsio egokitu bat erabiliz sortzen dira matplotlib.pyplot.hist. Egokitzapena funtzioak datu-multzo mota ezberdinekin lan egin dezakeela bermatzea du helburu.

Aztertutako korrelazio-adierazleak eta lagin-datuak

Aldagaien analisiaren emaitzen ostean, panda-profilak, Korrelazioak atalean, Pearson eta Spearman korrelazio matrizeak bistaratuko ditu.

Azkartu esplorazio datuen analisia pandas-profiling liburutegia erabiliz
Pearson korrelazio matrizea

Beharrezkoa izanez gero, txostena sortzea abiarazten duen kodearen lerroan, korrelazioa kalkulatzerakoan erabilitako atalase-balioen adierazleak ezar ditzakezu. Hau eginez, zure analisirako zer korrelazio-indarra garrantzitsua den zehaztu dezakezu.

Azkenik, pandas-profiling txostenak, Sample atalean, datu multzoaren hasieratik hartutako datu bat erakusten du adibide gisa. Ikuspegi honek ezusteko desatseginak sor ditzake, lehen behaketak datu multzo osoaren ezaugarriak islatzen ez dituen lagin bat irudika dezaketelako.

Azkartu esplorazio datuen analisia pandas-profiling liburutegia erabiliz
Aztergai diren lagin-datuak biltzen dituen atala

Ondorioz, ez dut gomendatzen azken atal honi erreparatzea. Horren ordez, hobe da komandoa erabiltzea df.sample(5), datu multzotik 5 behaketa ausaz hautatuko dituena.

Emaitzak

Laburbilduz, panda-profilak egiteko liburutegiak analistari gaitasun erabilgarriak ematen dizkio datuen ideia gutxi gorabehera azkar lortu behar duzun kasuetan edo norbaiti adimen-analisi-txosten bat helarazi behar dion kasuetan. Aldi berean, datuekin benetako lana, bere ezaugarriak kontuan hartuta, eskuz egiten da, pandas-profiling erabili gabe bezala.

Adimen datuen analisi guztiak Jupyter koaderno batean nolakoak diren ikusi nahi baduzu, begiratu hau Nire proiektua nbviewer erabiliz sortu da. Eta barruan hau Dagokion kodea GitHub biltegietan aurki dezakezu.

Irakurle maitea! Nondik hasten zara datu multzo berriak aztertzen?

Azkartu esplorazio datuen analisia pandas-profiling liburutegia erabiliz

Iturria: www.habr.com

Gehitu iruzkin berria