Mu itupalẹ data ti iṣawari pọ si ni lilo ile-ikawe-profaili pandas

Igbesẹ akọkọ nigbati o bẹrẹ lati ṣiṣẹ pẹlu eto data tuntun ni lati loye rẹ. Lati le ṣe eyi, o nilo, fun apẹẹrẹ, lati wa awọn sakani ti awọn iye ti o gba nipasẹ awọn oniyipada, iru wọn, ati tun wa nipa nọmba awọn iye ti o padanu.

Ile-ikawe pandas n fun wa ni ọpọlọpọ awọn irinṣẹ iwulo fun ṣiṣe itupalẹ data iwadii (EDA). Ṣugbọn ṣaaju lilo wọn, o nilo nigbagbogbo lati bẹrẹ pẹlu awọn iṣẹ gbogbogbo diẹ sii bii df.describe (). Bibẹẹkọ, o yẹ ki o ṣe akiyesi pe awọn agbara ti a pese nipasẹ iru awọn iṣẹ bẹ ni opin, ati awọn ipele ibẹrẹ ti ṣiṣẹ pẹlu eyikeyi awọn eto data nigbati ṣiṣe EDA nigbagbogbo jọra si ara wọn.

Mu itupalẹ data ti iṣawari pọ si ni lilo ile-ikawe-profaili pandas

Òǹkọ̀wé ohun tí a ń tẹ̀ jáde lónìí sọ pé òun kì í ṣe onífẹ̀ẹ́ láti ṣe àwọn ìgbòkègbodò àsọtúnsọ. Bi abajade, ni wiwa awọn irinṣẹ lati ṣe ni kiakia ati daradara ṣe itupalẹ data iwadii, o wa ile-ikawe naa pandas-profiling. Awọn abajade ti iṣẹ rẹ ni a ṣe afihan kii ṣe ni irisi awọn itọkasi kọọkan, ṣugbọn ni irisi ijabọ HTML ti o ni kikun ti o ni pupọ julọ alaye nipa data ti a ṣe itupalẹ ti o le nilo lati mọ ṣaaju bẹrẹ lati ṣiṣẹ ni pẹkipẹki pẹlu rẹ.

Nibi a yoo wo awọn ẹya ti lilo ile-ikawe pandas-profiling ni lilo dataset Titanic gẹgẹbi apẹẹrẹ.

Itupalẹ data Exploratory lilo pandas

Mo pinnu lati ṣe idanwo pẹlu profaili pandas lori dataset Titanic nitori awọn oriṣi data ti o wa ninu ati wiwa awọn iye ti o padanu ninu rẹ. Mo gbagbọ pe ile-ikawe profaili pandas jẹ iwunilori pataki ni awọn ọran nibiti data ko ti sọ di mimọ ati nilo sisẹ siwaju da lori awọn abuda rẹ. Lati le ṣe aṣeyọri iru sisẹ, o nilo lati mọ ibiti o bẹrẹ ati kini lati san ifojusi si. Eyi ni ibiti awọn agbara profaili pandas wa ni ọwọ.

Ni akọkọ, a gbe data wọle ati lo pandas lati gba awọn iṣiro asọye:

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

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

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

Lẹhin ṣiṣe nkan ti koodu yii, iwọ yoo gba ohun ti o han ni nọmba atẹle.

Mu itupalẹ data ti iṣawari pọ si ni lilo ile-ikawe-profaili pandas
Awọn iṣiro apejuwe ti a gba ni lilo awọn irinṣẹ pandas boṣewa

Botilẹjẹpe alaye ti o wulo pupọ wa nibi, ko ni ohun gbogbo ti yoo nifẹ lati mọ nipa data ti o wa labẹ ikẹkọ. Fun apẹẹrẹ, ọkan le ro pe ninu fireemu data, ni eto kan DataFrame, awọn ori ila 891 wa. Ti eyi ba nilo lati ṣayẹwo, lẹhinna laini koodu miiran nilo lati pinnu iwọn ti fireemu naa. Lakoko ti awọn iṣiro wọnyi kii ṣe pataki awọn orisun-lekoko, atunwi wọn ni gbogbo igba jẹ owun lati padanu akoko ti o le ṣee lo dara julọ lati nu data naa.

Itupalẹ data Exploratory lilo pandas-profiling

Bayi jẹ ki a ṣe kanna ni lilo profaili pandas:

pandas_profiling.ProfileReport(df)

Ṣiṣe laini koodu ti o wa loke yoo ṣe agbejade ijabọ kan pẹlu awọn itọkasi itupalẹ data ti iṣawari. Koodu ti o han loke yoo gbejade data ti a rii, ṣugbọn o le jẹ ki o gbe faili HTML kan jade ti o le fihan si ẹnikan, fun apẹẹrẹ.

Apa akọkọ ti ijabọ naa yoo ni apakan Akopọ, fifun alaye ipilẹ nipa data (nọmba awọn akiyesi, nọmba awọn oniyipada, ati bẹbẹ lọ). Yoo tun ni atokọ ti awọn titaniji, ifitonileti oluyanju ti awọn nkan lati san ifojusi pataki si. Awọn itaniji wọnyi le pese awọn amọran si ibiti o ti le dojukọ awọn akitiyan afọmọ data rẹ.

Mu itupalẹ data ti iṣawari pọ si ni lilo ile-ikawe-profaili pandas
Abala Iroyin Akopọ

Exploratory oniyipada Analysis

Ni isalẹ apakan Akopọ ti ijabọ o le wa alaye to wulo nipa oniyipada kọọkan. Wọn pẹlu, ninu awọn ohun miiran, awọn shatti kekere ti n ṣapejuwe pinpin oniyipada kọọkan.

Mu itupalẹ data ti iṣawari pọ si ni lilo ile-ikawe-profaili pandas
Nipa Ayipada Nomba Ayipada

Gẹgẹbi o ti le rii lati apẹẹrẹ išaaju, profaili pandas fun wa ni ọpọlọpọ awọn itọkasi iwulo, gẹgẹbi ipin ati nọmba awọn iye ti o padanu, ati awọn iwọn awọn iṣiro ijuwe ti a ti rii tẹlẹ. Nitori Age jẹ oniyipada nọmba, iworan ti pinpin rẹ ni irisi histogram gba wa laaye lati pinnu pe a ni pinpin kaakiri si ọtun.

Nigbati o ba gbero oniyipada isori kan, awọn abajade abajade jẹ iyatọ diẹ si awọn ti a rii fun oniyipada nọmba kan.

Mu itupalẹ data ti iṣawari pọ si ni lilo ile-ikawe-profaili pandas
Nipa ibalopo categorical oniyipada

Eyun, dipo wiwa apapọ, o kere julọ ati ti o pọju, ile-ikawe pandas-profiling ri nọmba awọn kilasi. Nitori Sex - oniyipada alakomeji, awọn iye rẹ jẹ aṣoju nipasẹ awọn kilasi meji.

Ti o ba nifẹ lati ṣe ayẹwo koodu bii Emi, o le nifẹ si bawo ni deede ile-ikawe-profiling pandas ṣe iṣiro awọn metiriki wọnyi. Wiwa nipa eyi, fun pe koodu ikawe wa ni sisi ati wa lori GitHub, ko nira bẹ. Niwọn bi Emi kii ṣe afẹfẹ nla ti lilo awọn apoti dudu ninu awọn iṣẹ akanṣe mi, Mo wo koodu orisun ti ile-ikawe naa. Fun apẹẹrẹ, eyi ni ohun ti siseto fun sisẹ awọn oniyipada nomba dabi, aṣoju nipasẹ iṣẹ naa ṣàpèjúwe_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)

Botilẹjẹpe nkan ti koodu yii le dabi ẹni ti o tobi pupọ ati eka, o rọrun pupọ lati ni oye. Oro naa ni pe ninu koodu orisun ti ile-ikawe wa iṣẹ kan ti o pinnu iru awọn oniyipada. Ti o ba han pe ile-ikawe ti pade oniyipada nọmba kan, iṣẹ ti o wa loke yoo wa awọn metiriki ti a nwo. Iṣẹ yii nlo awọn iṣẹ pandas boṣewa fun ṣiṣẹ pẹlu awọn nkan ti iru Series, bi series.mean(). Awọn abajade iṣiro wa ni ipamọ sinu iwe-itumọ stats. Histograms ti wa ni ipilẹṣẹ nipa lilo ẹya ti o ni ibamu ti iṣẹ naa matplotlib.pyplot.hist. Aṣamubadọgba jẹ ifọkansi lati rii daju pe iṣẹ naa le ṣiṣẹ pẹlu awọn oriṣiriṣi awọn eto data.

Awọn itọkasi ibamu ati data ayẹwo ti a ṣe iwadi

Lẹhin awọn abajade ti iṣiro ti awọn oniyipada, pandas-profiling, ni apakan Awọn ibaraẹnisọrọ, yoo ṣe afihan awọn matrices ibamu ti Pearson ati Spearman.

Mu itupalẹ data ti iṣawari pọ si ni lilo ile-ikawe-profaili pandas
Pearson ibamu matrix

Ti o ba jẹ dandan, o le, ni laini koodu ti o nfa iran ijabọ naa, ṣeto awọn itọkasi ti awọn iye ala ti a lo nigbati o ṣe iṣiro ibamu. Nipa ṣiṣe eyi, o le pato iru agbara ti ibamu ti a gba pe o ṣe pataki fun itupalẹ rẹ.

Ni ipari, ijabọ profaili pandas, ni apakan Ayẹwo, ṣafihan, bi apẹẹrẹ, nkan kan ti data ti o ya lati ibẹrẹ ti ṣeto data naa. Ọna yii le ja si awọn iyanilẹnu ti ko dun, nitori awọn akiyesi diẹ akọkọ le ṣe aṣoju apẹẹrẹ ti ko ṣe afihan awọn abuda ti gbogbo ṣeto data.

Mu itupalẹ data ti iṣawari pọ si ni lilo ile-ikawe-profaili pandas
Abala ti o ni awọn ayẹwo data labẹ iwadi

Bi abajade, Emi ko ṣeduro akiyesi si apakan ti o kẹhin yii. Dipo, o dara lati lo aṣẹ naa df.sample(5), eyi ti yoo yan awọn akiyesi 5 laileto lati ṣeto data.

Awọn esi

Lati ṣe akopọ, ile-ikawe profaili pandas fun oluyanju naa diẹ ninu awọn agbara iwulo ti yoo wa ni ọwọ ni awọn ọran nibiti o nilo lati yara ni oye ti o ni inira ti data naa tabi firanṣẹ ijabọ itupalẹ oye si ẹnikan. Ni akoko kanna, iṣẹ gidi pẹlu data, ni akiyesi awọn ẹya ara ẹrọ rẹ, ni a ṣe, bi laisi lilo pandas-profiling, pẹlu ọwọ.

Ti o ba fẹ wo kini gbogbo itupalẹ data itetisi dabi ninu iwe ajako Jupyter kan, wo eyi mi ise agbese da lilo nbviewer. Ati ninu eyi O le wa koodu ti o baamu ni awọn ibi ipamọ GitHub.

Eyin onkawe! Nibo ni o bẹrẹ itupalẹ awọn eto data tuntun?

Mu itupalẹ data ti iṣawari pọ si ni lilo ile-ikawe-profaili pandas

orisun: www.habr.com

Fi ọrọìwòye kun