Ang una nga lakang sa pagsugod sa pagtrabaho sa usa ka bag-ong set sa datos mao ang pagsabut niini. Aron mahimo kini, kinahanglan nimo, pananglitan, aron mahibal-an ang mga han-ay sa mga kantidad nga gidawat sa mga variable, ang ilang mga tipo, ug mahibal-an usab ang bahin sa gidaghanon sa nawala nga mga kantidad.
Ang librarya sa pandas naghatag kanato og daghang mapuslanong mga himan alang sa pagpahigayon sa eksploratory data analysis (EDA). Apan sa dili pa nimo gamiton kini, kasagaran kinahanglan nimo nga magsugod sa mas kinatibuk-ang mga gimbuhaton sama sa df.describe(). Bisan pa, kinahanglan nga matikdan nga ang mga kapabilidad nga gihatag sa ingon nga mga gimbuhaton limitado, ug ang mga inisyal nga yugto sa pagtrabaho sa bisan unsang mga set sa datos kung ang pagbuhat sa EDA kanunay nga parehas sa usag usa.
Ang tagsulat sa materyal nga atong gipatik karon nag-ingon nga siya dili usa ka fan sa pagbuhat sa balik-balik nga mga aksyon. Ingon usa ka sangputanan, sa pagpangita sa mga himan aron dali ug episyente nga himuon ang pagtuki sa datos sa eksplorasyon, nakit-an niya ang librarya
Dinhi atong tan-awon ang mga bahin sa paggamit sa pandas-profiling library gamit ang Titanic dataset isip pananglitan.
Exploratory data analysis gamit ang mga panda
Nakahukom ko nga mag-eksperimento sa pandas-profiling sa Titanic dataset tungod sa lain-laing matang sa datos nga anaa niini ug ang presensya sa nawala nga mga bili niini. Nagtuo ko nga ang librarya nga nagprofile sa pandas labi ka makapaikag sa mga kaso diin ang datos wala pa malimpyohan ug nanginahanglan dugang nga pagproseso depende sa mga kinaiya niini. Aron malampuson nga mahimo ang ingon nga pagproseso, kinahanglan nimo mahibal-an kung asa magsugod ug kung unsa ang hatagan pagtagad. Dinhi diin magamit ang mga kapabilidad sa pag-profile sa panda.
Una, gi-import namon ang datos ug gigamit ang mga pandas aron makakuha mga deskriptibo nga istatistika:
# ΠΈΠΌΠΏΠΎΡΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΡ
ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²
import pandas as pd
import pandas_profiling
import numpy as np
# ΠΈΠΌΠΏΠΎΡΡ Π΄Π°Π½Π½ΡΡ
df = pd.read_csv('/Users/lukas/Downloads/titanic/train.csv')
# Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ
df.describe()
Human sa pagpatuman niini nga piraso sa code, imong makuha ang gipakita sa mosunod nga numero.
Deskriptibo nga estadistika nga nakuha gamit ang standard nga mga tool sa pandas
Bisan kung adunay daghang mapuslanon nga kasayuran dinhi, wala kini naglangkob sa tanan nga makapaikag nga mahibal-an bahin sa datos nga gitun-an. Pananglitan, ang usa mahimong maghunahuna nga sa usa ka data frame, sa usa ka istruktura DataFrame
, adunay 891 ka linya. Kung kini kinahanglan nga susihon, unya lain nga linya sa code ang gikinahanglan aron mahibal-an ang gidak-on sa frame. Bisan kung kini nga mga kalkulasyon dili labi ka kusog sa kapanguhaan, ang pagsubli niini sa tanan nga oras kinahanglan nga mag-usik sa oras nga mahimoβg mas maayo nga gigugol sa paglimpyo sa datos.
Exploratory data analysis gamit ang pandas-profiling
Karon atong buhaton ang parehas gamit ang pandas-profiling:
pandas_profiling.ProfileReport(df)
Ang pagpatuman sa linya sa code sa ibabaw makamugna og usa ka taho nga adunay mga timailhan sa pagtuki sa datos sa eksplorasyon. Ang code nga gipakita sa ibabaw magpagawas sa datos nga nakit-an, apan mahimo nimo kini nga output sa usa ka HTML file nga mahimo nimong ipakita sa usa ka tawo, pananglitan.
Ang una nga bahin sa taho adunay sulud nga seksyon sa Kinatibuk-ang Pagtan-aw, nga naghatag sukaranan nga kasayuran bahin sa datos (gidaghanon sa mga obserbasyon, gidaghanon sa mga variable, ug uban pa). Naglangkob usab kini usa ka lista sa mga alerto, nga nagpahibalo sa analista sa mga butang nga hatagan espesyal nga pagtagad. Kini nga mga alerto makahatag mga timailhan kung asa nimo mapunting ang imong mga paningkamot sa paglimpyo sa datos.
Kinatibuk-ang pagtan-aw nga seksyon sa taho
Pagtuki sa Variable sa Eksploratory
Ubos sa Overview nga seksyon sa report makit-an nimo ang mapuslanon nga kasayuran bahin sa matag variable. Naglakip kini, taliwala sa ubang mga butang, gagmay nga mga tsart nga naghulagway sa pag-apod-apod sa matag variable.
Mahitungod sa Age Numeric Variable
Sama sa imong makita gikan sa miaging pananglitan, ang pandas-profiling naghatag kanamo daghang mapuslanon nga mga indikasyon, sama sa porsyento ug gidaghanon sa nawala nga mga kantidad, ingon man ang mga sukod sa deskriptibo nga istatistika nga nakita na namon. Kay Age
mao ang usa ka numerical variable, visualization sa iyang apod-apod sa porma sa usa ka histogram nagtugot kanato sa paghinapos nga kita adunay usa ka apod-apod skewed sa tuo.
Kung gikonsiderar ang usa ka categorical variable, ang mga resulta sa output gamay nga lahi sa nakit-an alang sa usa ka variable nga numero.
Mahitungod sa Sex categorical variable
Sa ato pa, imbes nga makit-an ang average, minimum ug maximum, nakit-an sa pandas-profiling library ang gidaghanon sa mga klase. Kay Sex
- usa ka binary variable, ang mga kantidad niini girepresentahan sa duha ka klase.
Kung gusto nimo nga susihon ang code sama sa akong gibuhat, tingali interesado ka kung giunsa ang pagkalkula sa librarya sa profile sa pandas niini nga mga sukatan. Ang pagpangita bahin niini, tungod kay ang code sa librarya bukas ug magamit sa GitHub, dili kaayo lisud. Tungod kay dili ako usa ka dako nga fan sa paggamit sa mga itom nga kahon sa akong mga proyekto, akong gitan-aw ang source code sa librarya. Pananglitan, kini ang hitsura sa mekanismo sa pagproseso sa mga variable nga numero, nga girepresentahan sa function
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)
Bisan kung kini nga piraso sa code ingon og dako ug komplikado, kini sa tinuud yano kaayo nga sabton. Ang punto mao nga sa source code sa librarya adunay usa ka function nga nagtino sa mga matang sa mga baryable. Kung nahibal-an nga ang librarya nakasugat sa usa ka variable nga numero, ang function sa ibabaw makit-an ang mga sukatan nga among gitan-aw. Kini nga function naggamit sa standard nga mga operasyon sa pandas alang sa pagtrabaho sa mga butang nga lahi Series
, sama sa series.mean()
. Ang mga resulta sa kalkulasyon gitipigan sa usa ka diksyonaryo stats
. Ang mga histogram gihimo gamit ang gipahiangay nga bersyon sa function matplotlib.pyplot.hist
. Ang pagpahiangay gitumong sa pagsiguro nga ang function mahimoβg molihok sa lainlaing mga lahi sa mga set sa datos.
Gitun-an ang mga indikasyon sa correlation ug sample data
Pagkahuman sa mga resulta sa pag-analisar sa mga variable, ang pandas-profiling, sa seksyon sa Correlations, magpakita sa Pearson ug Spearman correlation matrices.
Pearson correlation matrix
Kung gikinahanglan, mahimo nimo, sa linya sa code nga nagpalihok sa henerasyon sa report, ibutang ang mga timailhan sa mga kantidad sa threshold nga gigamit sa pagkalkula sa correlation. Pinaagi sa pagbuhat niini, mahimo nimong mahibal-an kung unsang kusog sa correlation ang giisip nga hinungdanon alang sa imong pag-analisar.
Sa katapusan, ang pandas-profiling report, sa Sample section, nagpakita, isip usa ka pananglitan, usa ka piraso sa datos nga gikuha gikan sa sinugdanan sa data set. Kini nga pamaagi mahimong mosangpot sa dili maayo nga mga sorpresa, tungod kay ang unang pipila ka mga obserbasyon mahimong magrepresentar sa usa ka sample nga wala magpakita sa mga kinaiya sa tibuok data set.
Seksyon nga adunay sampol nga datos nga gitun-an
Ingon usa ka sangputanan, dili nako girekomenda nga hatagan pagtagad ang katapusan nga seksyon. Hinuon, mas maayo nga gamiton ang sugo df.sample(5)
, nga random nga mopili sa 5 ka obserbasyon gikan sa data set.
Mga resulta
Sa pag-summarize, ang pandas-profiling library naghatag sa analista sa pipila ka mapuslanon nga kapabilidad nga magamit sa mga kaso diin kinahanglan nimo nga dali nga makakuha usa ka dili maayo nga ideya sa datos o ipasa ang usa ka taho sa pagtuki sa paniktik sa usa ka tawo. Sa parehas nga oras, ang tinuud nga pagtrabaho sa datos, nga gikonsiderar ang mga bahin niini, gihimo, nga wala gigamit ang pandas-profiling, nga mano-mano.
Kung gusto nimo tan-awon kung unsa ang hitsura sa tanan nga pagtuki sa datos sa paniktik sa usa ka notebook sa Jupyter, tan-awa
Minahal nga magbabasa! Asa ka magsugod sa pag-analisar sa bag-ong mga set sa datos?
Source: www.habr.com