Bespoedig verkennende data-analise met behulp van die pandas-profielbiblioteek

Die eerste stap wanneer jy met 'n nuwe datastel begin werk, is om dit te verstaan. Om dit te kan doen, moet jy byvoorbeeld die reekse waardes wat deur die veranderlikes aanvaar word, hul tipes uitvind en ook uitvind oor die aantal ontbrekende waardes.

Die pandas-biblioteek bied ons baie nuttige gereedskap om verkennende data-analise (EDA) uit te voer. Maar voordat jy dit gebruik, moet jy gewoonlik begin met meer algemene funksies soos df.describe(). Daar moet egter op gelet word dat die vermoëns wat deur sulke funksies verskaf word, beperk is, en die aanvanklike stadiums van werk met enige datastelle wanneer EDA uitgevoer word, is baie dikwels baie soortgelyk aan mekaar.

Bespoedig verkennende data-analise met behulp van die pandas-profielbiblioteek

Die skrywer van die materiaal wat ons vandag publiseer, sê dat hy nie 'n aanhanger daarvan is om herhalende aksies uit te voer nie. As gevolg hiervan, op soek na gereedskap om vinnig en doeltreffend verkennende data-analise uit te voer, het hy die biblioteek gevind pandas-profilering. Die resultate van sy werk word nie in die vorm van sekere individuele aanwysers uitgedruk nie, maar in die vorm van 'n redelik gedetailleerde HTML-verslag wat die meeste inligting bevat oor die ontleed data wat jy dalk moet weet voordat jy nouer daarmee begin werk.

Hier sal ons kyk na die kenmerke van die gebruik van die pandas-profielbiblioteek deur die Titanic-datastel as voorbeeld te gebruik.

Verkennende data-analise met behulp van pandas

Ek het besluit om met pandas-profilering op die Titanic-datastel te eksperimenteer weens die verskillende tipes data wat dit bevat en die teenwoordigheid van ontbrekende waardes daarin. Ek glo dat die pandas-profielbiblioteek veral interessant is in gevalle waar die data nog nie skoongemaak is nie en verdere verwerking vereis, afhangende van die kenmerke daarvan. Om sulke verwerking suksesvol uit te voer, moet jy weet waar om te begin en waarna om aandag te gee. Dit is waar pandas-profilering vermoëns handig te pas kom.

Eerstens voer ons die data in en gebruik pandas om beskrywende statistieke te verkry:

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

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

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

Nadat u hierdie stukkie kode uitgevoer het, sal u kry wat in die volgende figuur getoon word.

Bespoedig verkennende data-analise met behulp van die pandas-profielbiblioteek
Beskrywende statistiek verkry met behulp van standaard pandas gereedskap

Alhoewel daar baie nuttige inligting hier is, bevat dit nie alles wat interessant sou wees om te weet oor die data wat bestudeer word nie. Byvoorbeeld, 'n mens kan aanvaar dat dit in 'n dataraam, in 'n struktuur DataFrame, daar is 891 rye. As dit nagegaan moet word, is 'n ander reël kode nodig om die grootte van die raam te bepaal. Alhoewel hierdie berekeninge nie besonder hulpbron-intensief is nie, is dit gebonde aan tyd mors om dit heeltyd te herhaal wat waarskynlik beter bestee kan word om die data skoon te maak.

Verkennende data-analise met behulp van pandas-profilering

Kom ons doen nou dieselfde deur pandas-profilering te gebruik:

pandas_profiling.ProfileReport(df)

Deur die bogenoemde reël kode uit te voer, sal 'n verslag met verkennende data-analise-aanwysers genereer. Die kode wat hierbo gewys word, sal die data wat gevind is, uitvoer, maar jy kan die resultaat 'n HTML-lêer maak wat jy byvoorbeeld aan iemand kan wys.

Die eerste deel van die verslag sal 'n Oorsig-afdeling bevat wat basiese inligting oor die data (aantal waarnemings, aantal veranderlikes, ens.) verskaf. Dit sal ook 'n lys van waarskuwings bevat, wat die ontleder in kennis stel van dinge om spesiale aandag aan te gee. Hierdie waarskuwings kan leidrade gee oor waar jy jou data-opruimpogings kan fokus.

Bespoedig verkennende data-analise met behulp van die pandas-profielbiblioteek
Oorsig verslag afdeling

Verkennende veranderlike analise

Onder die Oorsig-afdeling van die verslag kan jy nuttige inligting oor elke veranderlike vind. Dit sluit onder andere klein kaarte in wat die verspreiding van elke veranderlike beskryf.

Bespoedig verkennende data-analise met behulp van die pandas-profielbiblioteek
Oor die Ouderdom Numeriese Veranderlike

Soos u uit die vorige voorbeeld kan sien, gee pandas-profilering ons verskeie nuttige aanwysers, soos die persentasie en aantal ontbrekende waardes, sowel as die beskrywende statistiekmaatstawwe wat ons reeds gesien het. Omdat Age is 'n numeriese veranderlike, visualisering van die verspreiding daarvan in die vorm van 'n histogram stel ons in staat om tot die gevolgtrekking te kom dat ons 'n verspreiding na regs skeef het.

Wanneer 'n kategoriese veranderlike oorweeg word, verskil die uitsetresultate effens van dié wat vir 'n numeriese veranderlike gevind word.

Bespoedig verkennende data-analise met behulp van die pandas-profielbiblioteek
Oor die Seks kategoriese veranderlike

In plaas daarvan om die gemiddelde, minimum en maksimum te vind, het die pandas-profielbiblioteek naamlik die aantal klasse gevind. Omdat Sex - 'n binêre veranderlike, sy waardes word deur twee klasse voorgestel.

As jy graag kode soos ek wil ondersoek, sal jy dalk belangstel in hoe presies die pandas-profielbiblioteek hierdie statistieke bereken. Om hieroor uit te vind, aangesien die biblioteekkode oop en op GitHub beskikbaar is, is nie so moeilik nie. Aangesien ek nie 'n groot aanhanger daarvan is om swart bokse in my projekte te gebruik nie, het ek na die biblioteek se bronkode gekyk. Dit is byvoorbeeld hoe die meganisme vir die verwerking van numeriese veranderlikes lyk, verteenwoordig deur die funksie beskryf_numeries_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)

Alhoewel hierdie stukkie kode redelik groot en kompleks kan lyk, is dit eintlik baie eenvoudig om te verstaan. Die punt is dat daar in die bronkode van die biblioteek 'n funksie is wat die tipe veranderlikes bepaal. As dit blyk dat die biblioteek 'n numeriese veranderlike teëgekom het, sal die bogenoemde funksie die metrieke vind waarna ons gekyk het. Hierdie funksie gebruik standaard pandas-operasies om met soorte voorwerpe te werk Series, soos series.mean(). Berekeningresultate word in 'n woordeboek gestoor stats. Histogramme word gegenereer deur 'n aangepaste weergawe van die funksie te gebruik matplotlib.pyplot.hist. Aanpassing is daarop gemik om te verseker dat die funksie met verskillende tipes datastelle kan werk.

Korrelasie-aanwysers en steekproefdata bestudeer

Na die resultate van die ontleding van die veranderlikes, sal pandas-profilering, in die Korrelasies-afdeling, die Pearson- en Spearman-korrelasiematrikse vertoon.

Bespoedig verkennende data-analise met behulp van die pandas-profielbiblioteek
Pearson korrelasie matriks

Indien nodig, kan u in die kodereël wat die generering van die verslag aktiveer, die aanwysers stel van die drempelwaardes wat gebruik word tydens die berekening van die korrelasie. Deur dit te doen, kan jy spesifiseer watter sterkte van korrelasie as belangrik vir jou analise beskou word.

Ten slotte, in die pandas-profielverslag, in die Voorbeeld-afdeling, word 'n fragment van data wat vanaf die begin van die datastel geneem is, as 'n voorbeeld vertoon. Hierdie benadering kan tot onaangename verrassings lei, aangesien die eerste paar waarnemings 'n steekproef kan verteenwoordig wat nie die kenmerke van die hele datastel weerspieël nie.

Bespoedig verkennende data-analise met behulp van die pandas-profielbiblioteek
Afdeling wat voorbeelddata bevat wat bestudeer word

Gevolglik beveel ek nie aan om aandag aan hierdie laaste afdeling te gee nie. In plaas daarvan is dit beter om die opdrag te gebruik df.sample(5), wat lukraak 5 waarnemings uit die datastel sal kies.

Resultate van

Om op te som, die pandas-profielbiblioteek gee die ontleder 'n paar nuttige vermoëns wat handig sal wees in gevalle waar jy vinnig 'n rowwe idee van die data moet kry of 'n intelligensie-ontledingsverslag aan iemand moet deurgee. Terselfdertyd word werklike werk met data, met inagneming van die kenmerke daarvan, met die hand uitgevoer, soos sonder om pandas-profilering te gebruik.

As jy wil kyk hoe alle intelligensiedata-ontleding in een Jupyter-notaboek lyk, kyk gerus na hierdie my projek geskep met behulp van nbviewer. En in hierdie U kan die ooreenstemmende kode in GitHub-bewaarplekke vind.

Beste lesers! Waar begin jy om nuwe datastelle te ontleed?

Bespoedig verkennende data-analise met behulp van die pandas-profielbiblioteek

Bron: will.com

Voeg 'n opmerking