Përshpejtoni analizën e të dhënave eksploruese duke përdorur bibliotekën e profilizimit të pandave

Hapi i parë kur filloni të punoni me një grup të ri të dhënash është ta kuptoni atë. Për ta bërë këtë, ju duhet, për shembull, të zbuloni vargjet e vlerave të pranuara nga variablat, llojet e tyre dhe gjithashtu të zbuloni numrin e vlerave që mungojnë.

Biblioteka e pandave na ofron shumë mjete të dobishme për kryerjen e analizës së të dhënave eksploruese (EDA). Por përpara se t'i përdorni ato, zakonisht duhet të filloni me funksione më të përgjithshme si df.describe(). Sidoqoftë, duhet të theksohet se aftësitë e ofruara nga funksione të tilla janë të kufizuara, dhe fazat fillestare të punës me çdo grup të dhënash gjatë kryerjes së EDA janë shumë shpesh shumë të ngjashme me njëra-tjetrën.

Përshpejtoni analizën e të dhënave eksploruese duke përdorur bibliotekën e profilizimit të pandave

Autori i materialit që po publikojmë sot thotë se nuk është adhurues i kryerjes së veprimeve të përsëritura. Si rezultat, në kërkim të mjeteve për të kryer shpejt dhe me efikasitet analizën e të dhënave eksploruese, ai gjeti bibliotekën panda-profilimi. Rezultatet e punës së tij shprehen jo në formën e treguesve të caktuar individualë, por në formën e një raporti mjaft të detajuar HTML që përmban shumicën e informacionit në lidhje me të dhënat e analizuara që mund t'ju duhet të dini përpara se të filloni të punoni më ngushtë me të.

Këtu do të shikojmë veçoritë e përdorimit të bibliotekës së profilit të pandave duke përdorur të dhënat e Titanikut si shembull.

Analiza e të dhënave eksploruese duke përdorur panda

Vendosa të eksperimentoj me profilizimin e pandave në grupin e të dhënave të Titanikut për shkak të llojeve të ndryshme të të dhënave që përmban dhe pranisë së vlerave që mungojnë në të. Besoj se biblioteka e profilit të pandave është veçanërisht interesante në rastet kur të dhënat ende nuk janë pastruar dhe kërkojnë përpunim të mëtejshëm në varësi të karakteristikave të saj. Për të kryer me sukses një përpunim të tillë, duhet të dini se ku të filloni dhe çfarë t'i kushtoni vëmendje. Këtu janë të dobishme aftësitë e profilizimit të pandave.

Së pari, ne importojmë të dhënat dhe përdorim panda për të marrë statistika përshkruese:

# импорт необходимых пакетов
import pandas as pd
import pandas_profiling
import numpy as np

# импорт данных
df = pd.read_csv('/Users/lukas/Downloads/titanic/train.csv')

# вычисление показателей описательной статистики
df.describe()

Pasi të keni ekzekutuar këtë pjesë të kodit, do të merrni atë që tregohet në figurën e mëposhtme.

Përshpejtoni analizën e të dhënave eksploruese duke përdorur bibliotekën e profilizimit të pandave
Statistikat përshkruese të marra duke përdorur mjete standarde të pandave

Edhe pse këtu ka shumë informacione të dobishme, ai nuk përmban gjithçka që do të ishte interesante të dihej për të dhënat në studim. Për shembull, mund të supozohet se në një kornizë të dhënash, në një strukturë DataFrame, janë 891 rreshta. Nëse kjo duhet të kontrollohet, atëherë kërkohet një rresht tjetër kodi për të përcaktuar madhësinë e kornizës. Ndërsa këto llogaritje nuk janë veçanërisht intensive për burime, përsëritja e tyre gjatë gjithë kohës do të humbasë kohë që ndoshta mund të shpenzohet më mirë për pastrimin e të dhënave.

Analiza e të dhënave eksploruese duke përdorur profilizimin e pandave

Tani le të bëjmë të njëjtën gjë duke përdorur panda-profiling:

pandas_profiling.ProfileReport(df)

Ekzekutimi i linjës së mësipërme të kodit do të gjenerojë një raport me tregues të analizës së të dhënave eksploruese. Kodi i paraqitur më sipër do të nxjerrë të dhënat e gjetura, por ju mund ta bëni atë të nxjerrë një skedar HTML që mund t'ia tregoni dikujt, për shembull.

Pjesa e parë e raportit do të përmbajë një seksion "Përmbledhje", duke dhënë informacion bazë për të dhënat (numri i vëzhgimeve, numri i variablave, etj.). Ai do të përmbajë gjithashtu një listë sinjalizimesh, duke njoftuar analistin për gjërat që duhet t'i kushtojë vëmendje të veçantë. Këto sinjalizime mund të japin të dhëna se ku mund të përqendroni përpjekjet tuaja për pastrimin e të dhënave.

Përshpejtoni analizën e të dhënave eksploruese duke përdorur bibliotekën e profilizimit të pandave
Seksioni i raportit të përmbledhjes

Analiza Hulumtuese e Variablave

Nën seksionin Vështrim i përgjithshëm i raportit mund të gjeni informacione të dobishme për secilën variabël. Ato përfshijnë, ndër të tjera, grafikët e vegjël që përshkruajnë shpërndarjen e secilës variabël.

Përshpejtoni analizën e të dhënave eksploruese duke përdorur bibliotekën e profilizimit të pandave
Rreth variablës numerike të moshës

Siç mund ta shihni nga shembulli i mëparshëm, profilizimi i pandave na jep disa tregues të dobishëm, si përqindja dhe numri i vlerave që mungojnë, si dhe masat përshkruese të statistikave që kemi parë tashmë. Sepse Age është një ndryshore numerike, vizualizimi i shpërndarjes së saj në formën e një histogrami na lejon të konkludojmë se kemi një shpërndarje të anuar djathtas.

Kur merret parasysh një ndryshore kategorike, rezultatet e daljes janë paksa të ndryshme nga ato të gjetura për një ndryshore numerike.

Përshpejtoni analizën e të dhënave eksploruese duke përdorur bibliotekën e profilizimit të pandave
Rreth ndryshores kategorike seksi

Gjegjësisht, në vend që të gjente mesataren, minimumin dhe maksimumin, biblioteka e profilit të pandave gjeti numrin e klasave. Sepse Sex - një ndryshore binar, vlerat e saj përfaqësohen nga dy klasa.

Nëse ju pëlqen të ekzaminoni kodin si unë, mund t'ju interesojë se si saktësisht i llogarit këto metrikë biblioteka e profilit të pandave. Zbulimi i kësaj, duke qenë se kodi i bibliotekës është i hapur dhe i disponueshëm në GitHub, nuk është aq i vështirë. Meqenëse nuk jam një adhurues i madh i përdorimit të kutive të zeza në projektet e mia, i hodha një sy kodit burimor të bibliotekës. Për shembull, kështu duket mekanizmi për përpunimin e ndryshoreve numerike, i përfaqësuar nga funksioni përshkruani_numerike_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)

Edhe pse kjo pjesë e kodit mund të duket mjaft e madhe dhe komplekse, në fakt është shumë e thjeshtë për t'u kuptuar. Çështja është se në kodin burimor të bibliotekës ekziston një funksion që përcakton llojet e variablave. Nëse rezulton se biblioteka ka hasur në një ndryshore numerike, funksioni i mësipërm do të gjejë matjet që po shikonim. Ky funksion përdor operacionet standarde të pandave për të punuar me objekte të llojit Series, si series.mean(). Rezultatet e llogaritjes ruhen në një fjalor stats. Histogramet krijohen duke përdorur një version të përshtatur të funksionit matplotlib.pyplot.hist. Përshtatja synon të sigurojë që funksioni mund të funksionojë me lloje të ndryshme grupesh të dhënash.

Treguesit e korrelacionit dhe të dhënat e mostrës të studiuara

Pas rezultateve të analizës së variablave, panda-profilimi, në seksionin Korrelacione, do të shfaqë matricat e korrelacionit Pearson dhe Spearman.

Përshpejtoni analizën e të dhënave eksploruese duke përdorur bibliotekën e profilizimit të pandave
Matrica e korrelacionit Pearson

Nëse është e nevojshme, në rreshtin e kodit që shkakton gjenerimin e raportit, mund të vendosni treguesit e vlerave të pragut të përdorura gjatë llogaritjes së korrelacionit. Duke bërë këtë, ju mund të specifikoni se cila forca e korrelacionit konsiderohet e rëndësishme për analizën tuaj.

Së fundi, raporti i profilit të pandave, në seksionin "Sample", shfaq, si shembull, një pjesë të të dhënave të marra nga fillimi i grupit të të dhënave. Kjo qasje mund të çojë në surpriza të pakëndshme, pasi vëzhgimet e para mund të përfaqësojnë një mostër që nuk pasqyron karakteristikat e të gjithë grupit të të dhënave.

Përshpejtoni analizën e të dhënave eksploruese duke përdorur bibliotekën e profilizimit të pandave
Seksioni që përmban të dhënat e mostrës në studim

Si rezultat, unë nuk rekomandoj t'i kushtoni vëmendje këtij seksioni të fundit. Në vend të kësaj, është më mirë të përdorni komandën df.sample(5), i cili do të zgjedhë rastësisht 5 vëzhgime nga grupi i të dhënave.

Rezultatet e

Për ta përmbledhur, biblioteka e profilit të pandave i jep analistit disa aftësi të dobishme që do t'ju vijnë në ndihmë në rastet kur ju duhet të merrni shpejt një ide të përafërt të të dhënave ose t'i kaloni dikujt një raport analize të inteligjencës. Në të njëjtën kohë, puna reale me të dhënat, duke marrë parasysh veçoritë e saj, kryhet, si pa përdorur profilimin e pandave, me dorë.

Nëse dëshironi të hidhni një sy se si duken të gjitha analizat e të dhënave të inteligjencës në një fletore Jupyter, hidhini një sy этот projekti im u krijua duke përdorur nbviewer. Dhe ne kjo Ju mund të gjeni kodin përkatës në depot e GitHub.

Të nderuar lexues! Ku e filloni analizimin e grupeve të reja të të dhënave?

Përshpejtoni analizën e të dhënave eksploruese duke përdorur bibliotekën e profilizimit të pandave

Burimi: www.habr.com

Shto një koment