Fersnelle ferkennende gegevensanalyse mei help fan pandas-profilearjende bibleteek

De earste stap as jo begjinne te wurkjen mei in nije dataset is it te begripen. Om dit te dwaan, moatte jo bygelyks de berikken fan wearden útfine dy't aksepteare binne troch de fariabelen, har soarten, en ek útfine oer it oantal ûntbrekkende wearden.

De pandasbibleteek biedt ús in protte nuttige ark foar it útfieren fan ferkennende gegevensanalyse (EDA). Mar foardat jo se brûke, moatte jo meastal begjinne mei mear algemiene funksjes lykas df.describe(). It moat lykwols opmurken wurde dat de mooglikheden fan sokke funksjes beheind binne, en de earste fazen fan wurkjen mei alle datasets by it útfieren fan EDA binne heul faak tige ferlykber mei elkoar.

Fersnelle ferkennende gegevensanalyse mei help fan pandas-profilearjende bibleteek

De skriuwer fan it materiaal dat wy hjoed publisearje seit dat hy gjin fan is fan it útfieren fan repetitive aksjes. As gefolch, op syk nei ark om fluch en effisjint ferkennende gegevensanalyse út te fieren, fûn hy de bibleteek pandas-profiling. De resultaten fan har wurk wurde útdrukt net yn 'e foarm fan bepaalde yndividuele yndikatoaren, mar yn' e foarm fan in frij detaillearre HTML-rapport dat de measte ynformaasje befettet oer de analysearre gegevens dy't jo miskien moatte witte foardat jo der nauwer mei wurkje.

Hjir sille wy sjen nei de funksjes fan it brûken fan de pandas-profilearjende bibleteek mei de Titanic-dataset as foarbyld.

Exploratory data analyze mei help fan pandas

Ik besleat om te eksperimintearjen mei panda-profilearring op 'e Titanic-dataset fanwegen de ferskate soarten gegevens dy't it befettet en de oanwêzigens fan ûntbrekkende wearden deryn. Ik leau dat de pandas-profilearjende bibleteek foaral ynteressant is yn gefallen wêr't de gegevens noch net skjinmakke binne en fierdere ferwurking fereasket ôfhinklik fan har skaaimerken. Om sa'n ferwurking mei súkses út te fieren, moatte jo witte wêr't jo moatte begjinne en wêr't jo op moatte betelje. Dit is wêr't pandas-profilearjen mooglikheden fan pas komme.

Earst ymportearje wy de gegevens en brûke panda's om beskriuwende statistiken te krijen:

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

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

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

Nei it útfieren fan dit stik koade, krije jo wat yn 'e folgjende figuer wurdt werjûn.

Fersnelle ferkennende gegevensanalyse mei help fan pandas-profilearjende bibleteek
Beskriuwende statistiken krigen mei standert pandas-ark

Hoewol d'r hjir in protte nuttige ynformaasje is, befettet it net alles dat ynteressant wêze soe om te witten oer de ûndersochte gegevens. Bygelyks, men soe oannimme dat yn in gegevens frame, yn in struktuer DataFrame, der binne 891 rigen. As dit kontrolearre wurde moat, dan is in oare rigel koade nedich om de grutte fan it frame te bepalen. Hoewol dizze berekkeningen net bysûnder boarne-yntinsyf binne, is it hieltyd werheljen fan tiid bûn oan fergriemen fan tiid dy't wierskynlik better koe wurde bestege oan it skjinmeitsjen fan de gegevens.

Exploratory gegevensanalyse mei help fan pandas-profilearring

Litte wy no itselde dwaan mei pandas-profiling:

pandas_profiling.ProfileReport(df)

It útfieren fan de boppesteande rigel fan koade sil in rapport generearje mei yndikatoaren foar ferkennende gegevensanalyse. De hjirboppe werjûn koade sil de fûne gegevens útfiere, mar jo kinne it in HTML-bestân meitsje dat jo bygelyks oan ien sjen kinne.

It earste diel fan it rapport sil in Oersjoch seksje befetsje, dy't basisynformaasje jout oer de gegevens (oantal observaasjes, oantal fariabelen, ensfh.). It sil ek in list mei warskôgings befetsje, de analist ynformearje oer dingen om spesjaal omtinken oan te jaan. Dizze warskôgings kinne oanwizings leverje oer wêr't jo jo ynspanningen foar opromjen fan gegevens kinne fokusje.

Fersnelle ferkennende gegevensanalyse mei help fan pandas-profilearjende bibleteek
Oersjoch rapport seksje

Exploratory Variable Analysis

Under de seksje Oersjoch fan it rapport kinne jo nuttige ynformaasje fine oer elke fariabele. Se befetsje ûnder oare lytse diagrammen dy't de ferdieling fan elke fariabele beskriuwe.

Fersnelle ferkennende gegevensanalyse mei help fan pandas-profilearjende bibleteek
Oer de Age Numerike fariabele

Lykas jo kinne sjen út it foarige foarbyld, jout pandas-profiling ús ferskate nuttige yndikatoaren, lykas it persintaazje en oantal ûntbrekkende wearden, lykas de beskriuwende statistyske maatregels dy't wy al hawwe sjoen. Omdat Age is in numerike fariabele, fisualisaasje fan syn ferdieling yn 'e foarm fan in histogram lit ús konkludearje dat wy hawwe in ferdieling skewe nei rjochts.

By it beskôgjen fan in kategoaryske fariabele binne de útfierresultaten wat oars fan dy fûn foar in numerike fariabele.

Fersnelle ferkennende gegevensanalyse mei help fan pandas-profilearjende bibleteek
Oer de Seks kategoriale fariabele

Nammentlik, ynstee fan it gemiddelde, minimum en maksimum te finen, fûn de pandas-profilearjende bibleteek it oantal klassen. Omdat Sex - in binêre fariabele, syn wearden wurde fertsjintwurdige troch twa klassen.

As jo ​​​​graach koade ûndersykje lykas ik, dan binne jo miskien ynteressearre yn hoe't de pandas-profilearjende bibleteek dizze metriken krekt berekkent. It útfine oer dit, jûn dat de bibleteekkoade iepen en beskikber is op GitHub, is net sa dreech. Om't ik gjin grutte fan bin fan it brûken fan swarte doazen yn myn projekten, sjoch ik nei de boarnekoade fan 'e biblioteek. Dit is bygelyks it meganisme foar it ferwurkjen fan numerike fariabelen, fertsjintwurdige troch de funksje beskriuwe_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)

Hoewol dit stikje koade frij grut en kompleks liket, is it eins heul ienfâldich te begripen. It punt is dat yn 'e boarnekoade fan' e bibleteek in funksje is dy't de soarten fariabelen bepaalt. As bliken docht dat de bibleteek in numerike fariabele tsjinkaam, sil de boppesteande funksje de metriken fine wêr't wy nei sochten. Dizze funksje brûkt standert pandas operaasjes foar wurkjen mei objekten fan type Series,lyk series.mean(). Berekkeningsresultaten wurde opslein yn in wurdboek stats. Histogrammen wurde oanmakke mei in oanpaste ferzje fan 'e funksje matplotlib.pyplot.hist. Oanpassing is rjochte op it garandearjen dat de funksje kin wurkje mei ferskate soarten datasets.

Korrelaasje-yndikatoaren en stekproefgegevens studearre

Nei de resultaten fan 'e analyze fan' e fariabelen sil pandas-profiling, yn 'e seksje Korrelaasjes, de Pearson- en Spearman-korrelaasjematriksen werjaan.

Fersnelle ferkennende gegevensanalyse mei help fan pandas-profilearjende bibleteek
Pearson korrelaasje matrix

As it nedich is, kinne jo, yn 'e rigel fan koade dy't de generaasje fan it rapport trigger, de yndikatoaren ynstelle fan' e drompelwearden brûkt by it berekkenjen fan 'e korrelaasje. Troch dit te dwaan kinne jo opjaan hokker sterkte fan korrelaasje wichtich wurdt beskôge foar jo analyse.

Uteinlik toant it pandas-profilearringrapport, yn 'e Sample-seksje, as foarbyld in stik gegevens nommen fan it begjin fan' e dataset. Dizze oanpak kin liede ta onaangename ferrassingen, om't de earste pear observaasjes in stekproef kinne fertsjintwurdigje dy't de skaaimerken fan 'e folsleine dataset net reflektearje.

Fersnelle ferkennende gegevensanalyse mei help fan pandas-profilearjende bibleteek
Seksje mei sample gegevens ûnder stúdzje

As gefolch ried ik net oan om omtinken te jaan oan dizze lêste paragraaf. Ynstee dêrfan is it better om it kommando te brûken df.sample(5), dy't willekeurich 5 observaasjes sil selektearje út 'e dataset.

Resultaten

Gearfetsjend, de pandas-profilearjende bibleteek jout de analist wat nuttige mooglikheden dy't fan pas komme sille yn gefallen wêr't jo fluch in rûch idee moatte krije fan 'e gegevens of in yntelliginsje-analyzerapport oan immen moatte trochjaan. Tagelyk wurdt wirklik wurk mei gegevens, rekken hâldend mei har funksjes, útfierd, lykas sûnder gebrûk fan pandas-profilearring, mei de hân.

As jo ​​​​nei sjen wolle hoe't alle analyze fan yntelliginsjegegevens derút sjocht yn ien Jupyter-notebook, sjoch dan ris nei dit myn projekt makke mei nbviewer. En yn dit Jo kinne de oerienkommende koade fine yn GitHub-repositories.

Dear readers! Wêr begjinne jo mei it analysearjen fan nije datasets?

Fersnelle ferkennende gegevensanalyse mei help fan pandas-profilearjende bibleteek

Boarne: www.habr.com

Add a comment