Արագացնել հետախուզական տվյալների վերլուծությունը՝ օգտագործելով պանդաների պրոֆիլավորման գրադարանը

Առաջին քայլը, երբ սկսում եք աշխատել նոր տվյալների հավաքածուի հետ, դա հասկանալն է: Դա անելու համար անհրաժեշտ է, օրինակ, պարզել փոփոխականների կողմից ընդունված արժեքների միջակայքերը, դրանց տեսակները, ինչպես նաև պարզել բացակայող արժեքների քանակը:

Պանդաների գրադարանը մեզ տրամադրում է բազմաթիվ օգտակար գործիքներ՝ հետախուզական տվյալների վերլուծություն (EDA) կատարելու համար: Բայց նախքան դրանք օգտագործելը, սովորաբար պետք է սկսել ավելի ընդհանուր գործառույթներից, ինչպիսին է df.describe(): Այնուամենայնիվ, հարկ է նշել, որ նման գործառույթներով տրամադրվող հնարավորությունները սահմանափակ են, և ցանկացած տվյալների հավաքածուների հետ աշխատելու սկզբնական փուլերը EDA-ն կատարելիս շատ հաճախ շատ նման են միմյանց:

Արագացնել հետախուզական տվյալների վերլուծությունը՝ օգտագործելով պանդաների պրոֆիլավորման գրադարանը

Այսօր մեր հրապարակած նյութի հեղինակն ասում է, որ կրկնվող գործողություններ կատարելու սիրահար չէ. Արդյունքում, որոնման տվյալների արագ և արդյունավետ վերլուծության համար գործիքներ փնտրելով, նա գտավ գրադարանը պանդաների պրոֆիլավորում. Նրա աշխատանքի արդյունքներն արտահայտվում են ոչ թե առանձին առանձին ցուցանիշների տեսքով, այլ բավականին մանրամասն HTML զեկույցի տեսքով, որը պարունակում է վերլուծված տվյալների մասին տեղեկատվության մեծ մասը, որը ձեզ հարկավոր է իմանալ նախքան դրա հետ ավելի սերտ աշխատելը:

Այստեղ մենք կդիտարկենք պանդաների պրոֆիլավորման գրադարանի օգտագործման առանձնահատկությունները՝ օգտագործելով Titanic տվյալների բազան որպես օրինակ:

Հետախուզական տվյալների վերլուծություն՝ օգտագործելով պանդաները

Ես որոշեցի փորձարկել «Titanic» տվյալների բազայի վրա պանդաների պրոֆիլավորումը, քանի որ այն պարունակում է տարբեր տեսակի տվյալների և դրանցում բացակայող արժեքների առկայության պատճառով: Կարծում եմ, որ պանդաների պրոֆիլավորման գրադարանը հատկապես հետաքրքիր է այն դեպքերում, երբ տվյալները դեռ չեն մաքրվել և պահանջում են հետագա մշակում՝ կախված դրա բնութագրերից: Նման մշակումը հաջողությամբ իրականացնելու համար դուք պետք է իմանաք, թե որտեղից սկսել և ինչին ուշադրություն դարձնել: Այստեղ է, որ օգտակար են պանդաների պրոֆիլավորման հնարավորությունները:

Նախ, մենք ներմուծում ենք տվյալները և օգտագործում պանդաները՝ նկարագրական վիճակագրություն ստանալու համար.

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

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

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

Կոդի այս հատվածը կատարելուց հետո դուք կստանաք այն, ինչ ցույց է տրված հետևյալ նկարում։

Արագացնել հետախուզական տվյալների վերլուծությունը՝ օգտագործելով պանդաների պրոֆիլավորման գրադարանը
Պանդաների ստանդարտ գործիքների միջոցով ստացված նկարագրական վիճակագրություն

Չնայած այստեղ շատ օգտակար տեղեկատվություն կա, այն չի պարունակում այն ​​ամենը, ինչը հետաքրքիր կլիներ իմանալ ուսումնասիրվող տվյալների մասին: Օրինակ, կարելի է ենթադրել, որ տվյալների շրջանակում, կառուցվածքում DataFrame, կա 891 տող։ Եթե ​​դա պետք է ստուգվի, ապա կոդերի մեկ այլ տող է պահանջվում շրջանակի չափը որոշելու համար: Թեև այս հաշվարկները առանձնապես ռեսուրսներ չեն պահանջում, դրանք անընդհատ կրկնելը կարող է ժամանակ վատնել, որը հավանաբար ավելի լավ կարող է ծախսվել տվյալների մաքրման վրա:

Հետախուզական տվյալների վերլուծություն՝ օգտագործելով պանդաների պրոֆիլավորումը

Հիմա եկեք նույնն անենք՝ օգտագործելով pandas-profiling:

pandas_profiling.ProfileReport(df)

Կոդերի վերը նշված տողի կատարումը կստեղծի զեկույց՝ հետախուզական տվյալների վերլուծության ցուցանիշներով: Վերևում ցուցադրված կոդը կարտադրի հայտնաբերված տվյալները, բայց դուք կարող եք այն դարձնել HTML ֆայլ, որը կարող եք ցույց տալ ինչ-որ մեկին, օրինակ:

Զեկույցի առաջին մասը կպարունակի Overview բաժինը, որը տալիս է տվյալների մասին հիմնական տեղեկություններ (դիտարկումների քանակը, փոփոխականների քանակը և այլն): Այն նաև կպարունակի ահազանգերի ցանկ՝ վերլուծաբանին ծանուցելով այն բաների մասին, որոնց վրա պետք է հատուկ ուշադրություն դարձնել: Այս ահազանգերը կարող են հուշումներ տալ, թե որտեղ կարող եք կենտրոնացնել ձեր տվյալների մաքրման ջանքերը:

Արագացնել հետախուզական տվյալների վերլուծությունը՝ օգտագործելով պանդաների պրոֆիլավորման գրադարանը
Ընդհանուր զեկույցի բաժին

Հետախուզական փոփոխականների վերլուծություն

Զեկույցի Overview բաժնում կարող եք գտնել օգտակար տեղեկություններ յուրաքանչյուր փոփոխականի մասին: Դրանք ներառում են, ի թիվս այլ բաների, փոքր գծապատկերներ, որոնք նկարագրում են յուրաքանչյուր փոփոխականի բաշխումը:

Արագացնել հետախուզական տվյալների վերլուծությունը՝ օգտագործելով պանդաների պրոֆիլավորման գրադարանը
Տարիքային թվային փոփոխականի մասին

Ինչպես տեսնում եք նախորդ օրինակից, պանդաների պրոֆիլավորումը մեզ տալիս է մի քանի օգտակար ցուցիչներ, ինչպիսիք են բացակայող արժեքների տոկոսը և թիվը, ինչպես նաև նկարագրական վիճակագրության չափումները, որոնք մենք արդեն տեսել ենք: Որովհետեւ Age թվային փոփոխական է, դրա բաշխման պատկերացումը հիստոգրամի տեսքով թույլ է տալիս եզրակացնել, որ ունենք աջ թեքված բաշխում:

Կատեգորիկ փոփոխականը դիտարկելիս ելքային արդյունքները մի փոքր տարբերվում են թվային փոփոխականի համար հայտնաբերվածներից:

Արագացնել հետախուզական տվյալների վերլուծությունը՝ օգտագործելով պանդաների պրոֆիլավորման գրադարանը
Սեռի կատեգորիկ փոփոխականի մասին

Մասնավորապես, միջինը, նվազագույնը և առավելագույնը գտնելու փոխարեն, պանդաների պրոֆիլներով գրադարանը գտել է դասերի քանակը։ Որովհետեւ Sex - երկուական փոփոխական, դրա արժեքները ներկայացված են երկու դասերով:

Եթե ​​ցանկանում եք ուսումնասիրել կոդը, ինչպես ես եմ անում, ձեզ կարող է հետաքրքրել, թե ինչպես է պանդաների պրոֆիլավորման գրադարանը հաշվարկում այս չափումները: Այս մասին պարզելը, հաշվի առնելով, որ գրադարանի կոդը բաց է և հասանելի է GitHub-ում, այնքան էլ դժվար չէ։ Քանի որ ես իմ նախագծերում սև արկղերի օգտագործման մեծ երկրպագու չեմ, ես նայեցի գրադարանի սկզբնական կոդը: Օրինակ՝ թվային փոփոխականների մշակման մեխանիզմն այսպիսի տեսք ունի՝ ներկայացված ֆունկցիայով նկարագրել_թվային_1դ:

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)

Չնայած կոդի այս հատվածը կարող է բավականին մեծ և բարդ թվալ, այն իրականում շատ պարզ է հասկանալ: Բանն այն է, որ գրադարանի սկզբնաղբյուրում առկա է փոփոխականների տեսակները որոշող ֆունկցիա։ Եթե ​​պարզվի, որ գրադարանը հանդիպել է թվային փոփոխականի, վերը նշված ֆունկցիան կգտնի այն չափումները, որոնք մենք դիտարկում էինք։ Այս ֆունկցիան օգտագործում է պանդաների ստանդարտ գործողություններ՝ տիպի օբյեկտների հետ աշխատելու համար Series, նման series.mean(). Հաշվարկների արդյունքները պահվում են բառարանում stats. Հիստոգրամները ստեղծվում են՝ օգտագործելով ֆունկցիայի հարմարեցված տարբերակը matplotlib.pyplot.hist. Հարմարեցումն ուղղված է ապահովելու, որ ֆունկցիան կարող է աշխատել տարբեր տեսակի տվյալների հավաքածուների հետ:

Ուսումնասիրված հարաբերակցության ցուցանիշները և ընտրանքային տվյալները

Փոփոխականների վերլուծության արդյունքներից հետո pandas-profiling-ը Correlations բաժնում կցուցադրի Pearson և Spearman հարաբերակցության մատրիցները։

Արագացնել հետախուզական տվյալների վերլուծությունը՝ օգտագործելով պանդաների պրոֆիլավորման գրադարանը
Պիրսոնի հարաբերակցության մատրիցա

Անհրաժեշտության դեպքում, դուք կարող եք կոդի տողում, որը հրահրում է զեկույցի ստեղծումը, սահմանել հարաբերակցությունը հաշվարկելիս օգտագործվող շեմային արժեքների ցուցիչները: Դրանով դուք կարող եք նշել, թե հարաբերակցության որ ուժն է կարևոր համարվում ձեր վերլուծության համար:

Վերջապես, պանդաների պրոֆիլավորման հաշվետվությունը Sample բաժնում, որպես օրինակ, ցուցադրում է տվյալների մի հատված, որը վերցված է տվյալների հավաքածուի սկզբից: Այս մոտեցումը կարող է հանգեցնել տհաճ անակնկալների, քանի որ առաջին մի քանի դիտարկումները կարող են ներկայացնել այնպիսի նմուշ, որը չի արտացոլում տվյալների ամբողջ հավաքածուի բնութագրերը:

Արագացնել հետախուզական տվյալների վերլուծությունը՝ օգտագործելով պանդաների պրոֆիլավորման գրադարանը
Ուսումնասիրվող նմուշային տվյալներ պարունակող բաժին

Արդյունքում, ես խորհուրդ չեմ տալիս ուշադրություն դարձնել այս վերջին հատվածին: Փոխարենը, ավելի լավ է օգտագործել հրամանը df.sample(5), որը պատահականության սկզբունքով կընտրի 5 դիտարկում տվյալների հավաքածուից:

Արդյունքները

Ամփոփելու համար, պանդաների պրոֆիլների գրադարանը վերլուծաբանին տալիս է մի քանի օգտակար հնարավորություններ, որոնք օգտակար կլինեն այն դեպքերում, երբ դուք պետք է արագ մոտավոր պատկերացում կազմեք տվյալների մասին կամ փոխանցեք հետախուզական վերլուծության զեկույցը ինչ-որ մեկին: Միևնույն ժամանակ տվյալների հետ իրական աշխատանքը, հաշվի առնելով դրա առանձնահատկությունները, կատարվում է, ինչպես առանց պանդաների պրոֆիլավորման օգտագործման, ձեռքով։

Եթե ​​ցանկանում եք նայել, թե ինչպիսի տեսք ունի հետախուզական տվյալների վերլուծությունը Jupyter-ի մեկ նոթատետրում, նայեք. այս իմ նախագիծը ստեղծվել է nbviewer-ի միջոցով: Եվ մեջ սա է Համապատասխան կոդը կարող եք գտնել GitHub-ի պահոցներում։

Հարգելի ընթերցողներ: Որտեղի՞ց եք սկսել վերլուծել տվյալների նոր հավաքածուները:

Արագացնել հետախուզական տվյալների վերլուծությունը՝ օգտագործելով պանդաների պրոֆիլավորման գրադարանը

Source: www.habr.com

Добавить комментарий