Akselere analiz done eksplorasyon lè l sèvi avèk bibliyotèk panda-profiling

Premye etap la lè w kòmanse travay ak yon seri nouvo done se konprann li. Pou fè sa, ou bezwen, pou egzanp, chèche konnen ranje valè yo aksepte pa varyab yo, kalite yo, epi tou jwenn enfòmasyon sou kantite valè ki manke yo.

Bibliyotèk panda a bay nou anpil zouti itil pou fè analiz done eksplorasyon (EDA). Men, anvan ou sèvi ak yo, anjeneral ou bezwen kòmanse ak plis fonksyon jeneral tankou df.describe(). Sepandan, li ta dwe remake ke kapasite yo bay nan fonksyon sa yo limite, ak premye etap yo nan travay ak nenpòt seri done lè fè EDA yo trè souvan trè sanble youn ak lòt.

Akselere analiz done eksplorasyon lè l sèvi avèk bibliyotèk panda-profiling

Otè materyèl n ap pibliye jodi a di ke li pa fanatik fè aksyon repetitif. Kòm yon rezilta, nan rechèch nan zouti rapid ak efikasite fè analiz done eksplorasyon, li te jwenn bibliyotèk la panda-profiling. Rezilta yo nan travay li yo eksprime pa nan fòm lan nan sèten endikatè endividyèl, men nan fòm lan nan yon rapò HTML jistis detaye ki gen pi fò nan enfòmasyon sou done yo analize ke ou ka bezwen konnen anvan ou kòmanse travay pi sere ak li.

Isit la nou pral gade nan karakteristik yo nan itilize bibliyotèk la panda-profiling lè l sèvi avèk Dataset Titanic la kòm yon egzanp.

Analiz done eksplorasyon lè l sèvi avèk panda

Mwen deside fè eksperyans panda-profiling sou seri done Titanic la akòz diferan kalite done li genyen ak prezans valè ki manke nan li. Mwen kwè ke bibliyotèk panda-profiling la espesyalman enteresan nan ka kote done yo poko netwaye epi li mande plis pwosesis depann sou karakteristik li yo. Yo nan lòd yo fè avèk siksè pwosesis sa yo, ou bezwen konnen ki kote yo kòmanse ak ki sa yo peye atansyon a. Sa a se kote kapasite panda-profiling vin an sou la men.

Premyèman, nou enpòte done yo epi sèvi ak panda pou jwenn estatistik deskriptif:

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

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

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

Apre ou fin egzekite moso kòd sa a, ou pral jwenn sa ki montre nan figi sa a.

Akselere analiz done eksplorasyon lè l sèvi avèk bibliyotèk panda-profiling
Estatistik deskriptif yo jwenn lè l sèvi avèk zouti estanda panda

Malgre ke gen anpil enfòmasyon itil isit la, li pa gen tout sa ki ta enteresan yo konnen sou done yo anba etid. Pou egzanp, yon moun ta ka asime ke nan yon ankadreman done, nan yon estrikti DataFrame, gen 891 ranje. Si sa a bezwen tcheke, Lè sa a, yon lòt liy nan kòd yo oblije detèmine gwosè a nan ankadreman an. Pandan ke kalkil sa yo pa patikilyèman resous-entansif, repete yo tout tan an se mare nan gaspiye tan ki ta ka pwobableman pi byen pase netwaye done yo.

Analiz done eksplorasyon lè l sèvi avèk panda-profiling

Koulye a, ann fè menm jan an lè l sèvi avèk panda-profiling:

pandas_profiling.ProfileReport(df)

Egzekite liy kòd ki anwo a pral jenere yon rapò ak endikatè analiz done eksploratwa. Kòd ki montre pi wo a pral pwodwi done yo jwenn, men ou ka fè li soti yon dosye HTML ke ou ka montre yon moun, pou egzanp.

Premye pati rapò a pral genyen yon seksyon Apèsi sou enfòmasyon yo, ki bay enfòmasyon debaz sou done yo (kantite obsèvasyon, kantite varyab, elatriye). Li pral genyen tou yon lis alèt, notifye analis la sou bagay yo peye atansyon espesyal. Alèt sa yo ka bay endikasyon sou ki kote ou ka konsantre efò netwayaj done ou yo.

Akselere analiz done eksplorasyon lè l sèvi avèk bibliyotèk panda-profiling
Apèsi sou rapò seksyon

Analiz Varyab eksploratwa

Anba seksyon Apèsi sou rapò a ou ka jwenn enfòmasyon itil sou chak varyab. Yo enkli, pami lòt bagay, ti tablo ki dekri distribisyon chak varyab.

Akselere analiz done eksplorasyon lè l sèvi avèk bibliyotèk panda-profiling
Konsènan Varyab nimerik laj la

Kòm ou ka wè nan egzanp anvan an, panda-profiling ban nou plizyè endikatè itil, tankou pousantaj ak kantite valè ki manke yo, osi byen ke mezi estatistik deskriptif ke nou te deja wè. Paske Age se yon varyab nimerik, vizyalizasyon distribisyon li yo nan fòm yon istogram pèmèt nou konkli ke nou gen yon distribisyon dekonpoze sou bò dwat la.

Lè w ap konsidere yon varyab kategorik, rezilta pwodiksyon yo yon ti kras diferan de sa yo jwenn pou yon varyab nimerik.

Akselere analiz done eksplorasyon lè l sèvi avèk bibliyotèk panda-profiling
Konsènan varyab kategorik Sèks la

Savwa, olye pou yo jwenn mwayèn, minimòm ak maksimòm, bibliyotèk panda-profiling la te jwenn kantite klas yo. Paske Sex - yon varyab binè, valè li yo reprezante pa de klas.

Si ou renmen egzamine kòd tankou mwen fè, ou ta ka enterese nan ki jan egzakteman panda-profiling bibliyotèk la kalkile mezi sa yo. Jwenn enfòmasyon sou sa a, bay kòd bibliyotèk la louvri epi li disponib sou GitHub, se pa tèlman difisil. Kòm mwen pa yon gwo fanatik nan itilize bwat nwa nan pwojè mwen yo, mwen te gade nan kòd sous bibliyotèk la. Pou egzanp, sa a se sa mekanis pou trete varyab nimerik sanble, reprezante pa fonksyon an describe_numeric_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)

Malgre ke moso kòd sa a ka sanble byen gwo ak konplèks, li se aktyèlman trè senp pou konprann. Pwen an se ke nan kòd sous bibliyotèk la gen yon fonksyon ki detèmine kalite varyab yo. Si li sanble ke bibliyotèk la te rankontre yon varyab nimerik, fonksyon ki anwo a ap jwenn mezi nou t ap gade yo. Fonksyon sa a sèvi ak operasyon panda estanda pou travay ak objè kalite Series, tankou series.mean(). Rezilta kalkil yo estoke nan yon diksyonè stats. Istogram yo pwodwi lè l sèvi avèk yon vèsyon adapte nan fonksyon an matplotlib.pyplot.hist. Adaptasyon vize pou asire ke fonksyon an ka travay ak diferan kalite seri done.

Endikatè korelasyon ak done echantiyon etidye

Apre rezilta analiz varyab yo, panda-profiling, nan seksyon Korelasyon yo, pral montre matris korelasyon Pearson ak Spearman.

Akselere analiz done eksplorasyon lè l sèvi avèk bibliyotèk panda-profiling
Matris korelasyon Pearson

Si sa nesesè, ou ka, nan liy kòd ki deklannche jenerasyon rapò a, mete endikatè yo nan valè papòt yo itilize lè w ap kalkile korelasyon an. Lè w fè sa, ou ka presize ki fòs korelasyon ki konsidere kòm enpòtan pou analiz ou a.

Finalman, rapò panda-profiling la, nan seksyon echantiyon an, montre, kòm yon egzanp, yon moso done yo pran depi nan konmansman an nan seri done a. Apwòch sa a ka mennen nan supriz dezagreyab, depi premye obsèvasyon yo ka reprezante yon echantiyon ki pa reflete karakteristik yo nan seri done a tout antye.

Akselere analiz done eksplorasyon lè l sèvi avèk bibliyotèk panda-profiling
Seksyon ki genyen echantiyon done anba etid

Kòm yon rezilta, mwen pa rekòmande pou peye atansyon sou dènye seksyon sa a. Olye de sa, li pi bon pou itilize kòmandman an df.sample(5), ki pral chwazi owaza 5 obsèvasyon nan seri done a.

Rezilta

Pou rezime, bibliyotèk la panda-profiling bay analis la kèk kapasite itil ki pral vin an sou la men nan ka kote ou bezwen byen vit jwenn yon lide ki graj sou done yo oswa pase yon rapò analiz entèlijans bay yon moun. An menm tan an, travay reyèl ak done, pran an kont karakteristik li yo, fèt, tankou san yo pa itilize panda-profiling, manyèlman.

Si ou vle pran yon gade nan ki sa tout analiz done entèlijans sanble nan yon kaye Jupyter, gade nan sa a pwojè mwen an te kreye lè l sèvi avèk nbviewer. Ak nan sa a Ou ka jwenn kòd ki koresponn lan nan depo GitHub.

Chè lektè! Ki kote ou kòmanse analize nouvo seri done?

Akselere analiz done eksplorasyon lè l sèvi avèk bibliyotèk panda-profiling

Sous: www.habr.com

Add nouvo kòmantè