Beschleunegt explorativ Donnéeën Analyse mat pandas-profiling Bibliothéik

Den éischte Schrëtt wann Dir ufänkt mat engem neien Dateset ze schaffen ass et ze verstoen. Fir dëst ze maachen, musst Dir zum Beispill d'Gamme vu Wäerter erausfannen, déi vun de Variabelen akzeptéiert sinn, hir Aarte, an och iwwer d'Zuel vun de fehlend Wäerter erausfannen.

D'Pandas Bibliothéik bitt eis vill nëtzlech Tools fir explorativ Datenanalyse (EDA) auszeféieren. Awer ier Dir se benotzt, musst Dir normalerweis mat méi allgemenge Funktiounen ufänken wéi df.describe (). Wéi och ëmmer, et sollt bemierkt datt d'Kapazitéite vun esou Funktiounen limitéiert sinn, an déi initial Etappe vun der Aarbecht mat all Datesets beim Ausféierung vun EDA si ganz dacks ganz ähnlech mateneen.

Beschleunegt explorativ Donnéeën Analyse mat pandas-profiling Bibliothéik

Den Auteur vum Material, dee mir haut verëffentlechen, seet, datt hien kee Fan ass fir repetitive Aktiounen ze maachen. Als Resultat, op der Sich no Tools fir séier an effizient explorativ Datenanalyse auszeféieren, huet hien d'Bibliothéik fonnt pandas-profiling. D'Resultater vu senger Aarbecht ginn net a Form vu bestëmmten individuellen Indikatoren ausgedréckt, awer a Form vun engem zimlech detailléierte HTML-Rapport, deen déi meescht Informatioun iwwer déi analyséiert Donnéeën enthält, déi Dir wësse musst, ier Dir ufänkt méi enk mat hinnen ze schaffen.

Hei wäerte mir d'Features kucken fir d'Pandas-Profiling-Bibliothéik ze benotzen mat der Titanic Dataset als Beispill.

Explorativ Datenanalyse mat Pandas

Ech hu beschloss mat Panda-Profiling op der Titanic-Datet ze experimentéieren wéinst de verschiddenen Zorte vun Daten déi et enthält an d'Präsenz vu fehlende Wäerter dran. Ech gleewen datt d'Pandas-Profiléierungsbibliothéik besonnesch interessant ass a Fäll wou d'Donnéeën nach net gebotzt goufen a weider Veraarbechtung erfuerdert ofhängeg vu senge Charakteristiken. Fir esou Veraarbechtung erfollegräich auszeféieren, musst Dir wësse wou ufänken a wat oppassen. Dëst ass wou d'Pandas-Profiléierungsfäegkeete praktesch kommen.

Als éischt importéiere mir d'Donnéeën a benotze Pandas fir beschreiwende Statistiken ze kréien:

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

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

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

Nodeems Dir dëst Stéck Code ausgefouert hutt, kritt Dir wat an der folgender Figur gewise gëtt.

Beschleunegt explorativ Donnéeën Analyse mat pandas-profiling Bibliothéik
Deskriptiv Statistike kritt mat Standard Pandas Tools

Och wann et vill nëtzlech Informatioun hei ass, enthält se net alles wat interessant wier iwwer d'Daten ze wëssen, déi studéiert ginn. Zum Beispill kann een unhuelen datt an engem Dateframe, an enger Struktur DataFrame, et ginn 891 Linnen. Wann dëst muss iwwerpréift ginn, ass eng aner Zeil vum Code néideg fir d'Gréisst vum Frame ze bestëmmen. Och wann dës Berechnungen net besonnesch Ressourceintensiv sinn, se all d'Zäit ze widderhuelen ass gebonnen Zäit ze verschwenden, déi méiglecherweis besser ausginn fir d'Daten ze botzen.

Explorativ Datenanalyse mat Pandas-Profiling

Loosst eis datselwecht maachen mat Pandas-Profiling:

pandas_profiling.ProfileReport(df)

D'Ausféierung vun der uewe genannter Zeil vum Code generéiert e Bericht mat explorativen Datenanalyseindikatoren. De Code hei uewen weist d'Daten aus, awer Dir kënnt et eng HTML-Datei ausginn, déi Dir zum Beispill engem weisen kënnt.

Den éischten Deel vum Bericht enthält eng Iwwersiichtssektioun, déi Basisinformatioun iwwer d'Daten gëtt (Zuel vun den Observatiounen, Zuel vun de Variablen, etc.). Et wäert och eng Lëscht vun Alarmer enthalen, den Analyst informéiert iwwer Saachen déi besonnesch oppassen. Dës Alarmer kënnen Hiweiser ubidden wou Dir Är Datereinigungsefforten konzentréiere kënnt.

Beschleunegt explorativ Donnéeën Analyse mat pandas-profiling Bibliothéik
Iwwerbléck Rapport Rubrik

Explorativ Variabel Analyse

Ënnert der Iwwersiichtssektioun vum Bericht fannt Dir nëtzlech Informatiounen iwwer all Variabel. Si enthalen ënner anerem kleng Charts déi d'Verdeelung vun all Variabel beschreiwen.

Beschleunegt explorativ Donnéeën Analyse mat pandas-profiling Bibliothéik
Iwwer d'Alter Numeresch Variabel

Wéi Dir aus dem fréiere Beispill kënnt gesinn, gëtt d'Pandas-Profiling eis e puer nëtzlech Indikatoren, sou wéi de Prozentsaz an d'Zuel vun de fehlend Wäerter, souwéi déi deskriptiv Statistik Moossnamen déi mir scho gesinn hunn. Well Age ass eng numeresch Variabel, d'Visualiséierung vu senger Verdeelung a Form vun engem Histogramm erlaabt eis ze schléissen datt mir eng Verdeelung no riets schief hunn.

Wann Dir eng kategoresch Variabel berücksichtegt, sinn d'Ausgabresultater liicht anescht wéi déi fir eng numeresch Variabel fonnt.

Beschleunegt explorativ Donnéeën Analyse mat pandas-profiling Bibliothéik
Iwwer d'Sex kategoresch Variabel

Nämlech, anstatt den Duerchschnëtt, Minimum a Maximum ze fannen, huet d'Pandas-Profiling-Bibliothéik d'Zuel vun de Klassen fonnt. Well Sex - eng binär Variabel, seng Wäerter ginn duerch zwou Klassen duergestallt.

Wann Dir gär de Code ënnersicht wéi ech, kënnt Dir interesséiert sinn wéi genau d'Pandas-Profiling-Bibliothéik dës Metriken berechent. Doriwwer erauszefannen, well de Bibliothéikscode op ass a verfügbar op GitHub ass, ass net sou schwéier. Well ech kee grousse Fan sinn vu schwaarze Këschte a menge Projeten ze benotzen, hunn ech de Quellcode vun der Bibliothéik gekuckt. Zum Beispill, dëst ass wéi de Mechanismus fir d'Veraarbechtung vun numeresche Variablen ausgesäit, representéiert duerch d'Funktioun beschreiwen_numeresch_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)

Och wann dëst Stéck Code zimlech grouss a komplex schénge kann, ass et eigentlech ganz einfach ze verstoen. De Punkt ass datt am Quellcode vun der Bibliothéik eng Funktioun ass déi d'Zorte vu Variabelen bestëmmt. Wann et sech erausstellt datt d'Bibliothéik eng numeresch Variabel begéint huet, fënnt déi uewe genannte Funktioun d'Metriken op déi mir gekuckt hunn. Dës Funktioun benotzt Standard Pandas Operatiounen fir mat Objeten vun Typ ze schaffen Series, wéi series.mean(). Berechnungsresultater ginn an engem Wierderbuch gespäichert stats. Histogramme ginn generéiert mat enger adaptéierter Versioun vun der Funktioun matplotlib.pyplot.hist. D'Adaptatioun zielt fir sécherzestellen datt d'Funktioun mat verschiddenen Aarte vun Datesets funktionnéiert.

Korrelatiounsindikatoren a Probedaten studéiert

No de Resultater vun der Analyse vun de Variabelen, weist d'Pandas-Profiling, an der Korrelatiounssektioun, d'Pearson a Spearman Korrelatiounsmatrices.

Beschleunegt explorativ Donnéeën Analyse mat pandas-profiling Bibliothéik
Pearson Korrelatioun Matrix

Wann néideg, kënnt Dir, an der Zeil vum Code, déi d'Generatioun vum Bericht ausléist, d'Indicateuren vun de Schwellewäerter setzen, déi beim Berechnung vun der Korrelatioun benotzt ginn. Andeems Dir dëst maacht, kënnt Dir spezifizéieren wéi eng Stäerkt vun der Korrelatioun als wichteg fir Är Analyse ugesi gëtt.

Schlussendlech weist de Panda-Profiling Bericht, an der Sample Sektioun, als Beispill e Stéck Daten aus dem Ufank vum Dateset. Dës Approche kann zu onsympathesche Iwwerraschungen féieren, well déi éischt puer Observatioune kënnen e Probe duerstellen, deen d'Charakteristike vum ganzen Datesaz net reflektéiert.

Beschleunegt explorativ Donnéeën Analyse mat pandas-profiling Bibliothéik
Sektioun mat Probedaten ënner Studie

Als Resultat, ech recommandéieren net op dës lescht Sektioun opmierksam ze maachen. Amplaz ass et besser de Kommando ze benotzen df.sample(5), déi zoufälleg 5 Observatioune vum Datesaz auswielen.

Resultater

Fir ze resuméieren, gëtt d'Pandas-Profiling-Bibliothéik dem Analyst e puer nëtzlech Fäegkeeten, déi praktesch kommen a Fäll wou Dir séier eng graff Iddi vun den Donnéeën muss kréien oder en Intelligenz Analysebericht un een weiderginn. Zur selwechter Zäit gëtt d'real Aarbecht mat Daten, andeems se seng Feature berücksichtegt, gemaach, wéi ouni Panda-Profiling, manuell.

Wann Dir wëllt kucke wéi all Intelligenzdatenanalyse an engem Jupyter Notizbuch ausgesäit, da kuckt op dat mäi Projet erstallt mat nbviewer. An an dat Dir kënnt de entspriechende Code an GitHub Repositories fannen.

Léif Lieser! Wou fänkt Dir un nei Datesätz ze analyséieren?

Beschleunegt explorativ Donnéeën Analyse mat pandas-profiling Bibliothéik

Source: will.com

Setzt e Commentaire