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.
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
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.
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.
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.
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.
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
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.
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.
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
Irakurle maitea! Nondik hasten zara datu multzo berriak aztertzen?
Iturria: www.habr.com