Hapi i parë kur filloni të punoni me një grup të ri të dhënash është ta kuptoni atë. Për ta bërë këtë, ju duhet, për shembull, të zbuloni vargjet e vlerave të pranuara nga variablat, llojet e tyre dhe gjithashtu të zbuloni numrin e vlerave që mungojnë.
Biblioteka e pandave na ofron shumë mjete të dobishme për kryerjen e analizës së të dhënave eksploruese (EDA). Por përpara se t'i përdorni ato, zakonisht duhet të filloni me funksione më të përgjithshme si df.describe(). Sidoqoftë, duhet të theksohet se aftësitë e ofruara nga funksione të tilla janë të kufizuara, dhe fazat fillestare të punës me çdo grup të dhënash gjatë kryerjes së EDA janë shumë shpesh shumë të ngjashme me njëra-tjetrën.
Autori i materialit që po publikojmë sot thotë se nuk është adhurues i kryerjes së veprimeve të përsëritura. Si rezultat, në kërkim të mjeteve për të kryer shpejt dhe me efikasitet analizën e të dhënave eksploruese, ai gjeti bibliotekën
Këtu do të shikojmë veçoritë e përdorimit të bibliotekës së profilit të pandave duke përdorur të dhënat e Titanikut si shembull.
Analiza e të dhënave eksploruese duke përdorur panda
Vendosa të eksperimentoj me profilizimin e pandave në grupin e të dhënave të Titanikut për shkak të llojeve të ndryshme të të dhënave që përmban dhe pranisë së vlerave që mungojnë në të. Besoj se biblioteka e profilit të pandave është veçanërisht interesante në rastet kur të dhënat ende nuk janë pastruar dhe kërkojnë përpunim të mëtejshëm në varësi të karakteristikave të saj. Për të kryer me sukses një përpunim të tillë, duhet të dini se ku të filloni dhe çfarë t'i kushtoni vëmendje. Këtu janë të dobishme aftësitë e profilizimit të pandave.
Së pari, ne importojmë të dhënat dhe përdorim panda për të marrë statistika përshkruese:
# импорт необходимых пакетов
import pandas as pd
import pandas_profiling
import numpy as np
# импорт данных
df = pd.read_csv('/Users/lukas/Downloads/titanic/train.csv')
# вычисление показателей описательной статистики
df.describe()
Pasi të keni ekzekutuar këtë pjesë të kodit, do të merrni atë që tregohet në figurën e mëposhtme.
Statistikat përshkruese të marra duke përdorur mjete standarde të pandave
Edhe pse këtu ka shumë informacione të dobishme, ai nuk përmban gjithçka që do të ishte interesante të dihej për të dhënat në studim. Për shembull, mund të supozohet se në një kornizë të dhënash, në një strukturë DataFrame
, janë 891 rreshta. Nëse kjo duhet të kontrollohet, atëherë kërkohet një rresht tjetër kodi për të përcaktuar madhësinë e kornizës. Ndërsa këto llogaritje nuk janë veçanërisht intensive për burime, përsëritja e tyre gjatë gjithë kohës do të humbasë kohë që ndoshta mund të shpenzohet më mirë për pastrimin e të dhënave.
Analiza e të dhënave eksploruese duke përdorur profilizimin e pandave
Tani le të bëjmë të njëjtën gjë duke përdorur panda-profiling:
pandas_profiling.ProfileReport(df)
Ekzekutimi i linjës së mësipërme të kodit do të gjenerojë një raport me tregues të analizës së të dhënave eksploruese. Kodi i paraqitur më sipër do të nxjerrë të dhënat e gjetura, por ju mund ta bëni atë të nxjerrë një skedar HTML që mund t'ia tregoni dikujt, për shembull.
Pjesa e parë e raportit do të përmbajë një seksion "Përmbledhje", duke dhënë informacion bazë për të dhënat (numri i vëzhgimeve, numri i variablave, etj.). Ai do të përmbajë gjithashtu një listë sinjalizimesh, duke njoftuar analistin për gjërat që duhet t'i kushtojë vëmendje të veçantë. Këto sinjalizime mund të japin të dhëna se ku mund të përqendroni përpjekjet tuaja për pastrimin e të dhënave.
Seksioni i raportit të përmbledhjes
Analiza Hulumtuese e Variablave
Nën seksionin Vështrim i përgjithshëm i raportit mund të gjeni informacione të dobishme për secilën variabël. Ato përfshijnë, ndër të tjera, grafikët e vegjël që përshkruajnë shpërndarjen e secilës variabël.
Rreth variablës numerike të moshës
Siç mund ta shihni nga shembulli i mëparshëm, profilizimi i pandave na jep disa tregues të dobishëm, si përqindja dhe numri i vlerave që mungojnë, si dhe masat përshkruese të statistikave që kemi parë tashmë. Sepse Age
është një ndryshore numerike, vizualizimi i shpërndarjes së saj në formën e një histogrami na lejon të konkludojmë se kemi një shpërndarje të anuar djathtas.
Kur merret parasysh një ndryshore kategorike, rezultatet e daljes janë paksa të ndryshme nga ato të gjetura për një ndryshore numerike.
Rreth ndryshores kategorike seksi
Gjegjësisht, në vend që të gjente mesataren, minimumin dhe maksimumin, biblioteka e profilit të pandave gjeti numrin e klasave. Sepse Sex
- një ndryshore binar, vlerat e saj përfaqësohen nga dy klasa.
Nëse ju pëlqen të ekzaminoni kodin si unë, mund t'ju interesojë se si saktësisht i llogarit këto metrikë biblioteka e profilit të pandave. Zbulimi i kësaj, duke qenë se kodi i bibliotekës është i hapur dhe i disponueshëm në GitHub, nuk është aq i vështirë. Meqenëse nuk jam një adhurues i madh i përdorimit të kutive të zeza në projektet e mia, i hodha një sy kodit burimor të bibliotekës. Për shembull, kështu duket mekanizmi për përpunimin e ndryshoreve numerike, i përfaqësuar nga funksioni
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)
Edhe pse kjo pjesë e kodit mund të duket mjaft e madhe dhe komplekse, në fakt është shumë e thjeshtë për t'u kuptuar. Çështja është se në kodin burimor të bibliotekës ekziston një funksion që përcakton llojet e variablave. Nëse rezulton se biblioteka ka hasur në një ndryshore numerike, funksioni i mësipërm do të gjejë matjet që po shikonim. Ky funksion përdor operacionet standarde të pandave për të punuar me objekte të llojit Series
, si series.mean()
. Rezultatet e llogaritjes ruhen në një fjalor stats
. Histogramet krijohen duke përdorur një version të përshtatur të funksionit matplotlib.pyplot.hist
. Përshtatja synon të sigurojë që funksioni mund të funksionojë me lloje të ndryshme grupesh të dhënash.
Treguesit e korrelacionit dhe të dhënat e mostrës të studiuara
Pas rezultateve të analizës së variablave, panda-profilimi, në seksionin Korrelacione, do të shfaqë matricat e korrelacionit Pearson dhe Spearman.
Matrica e korrelacionit Pearson
Nëse është e nevojshme, në rreshtin e kodit që shkakton gjenerimin e raportit, mund të vendosni treguesit e vlerave të pragut të përdorura gjatë llogaritjes së korrelacionit. Duke bërë këtë, ju mund të specifikoni se cila forca e korrelacionit konsiderohet e rëndësishme për analizën tuaj.
Së fundi, raporti i profilit të pandave, në seksionin "Sample", shfaq, si shembull, një pjesë të të dhënave të marra nga fillimi i grupit të të dhënave. Kjo qasje mund të çojë në surpriza të pakëndshme, pasi vëzhgimet e para mund të përfaqësojnë një mostër që nuk pasqyron karakteristikat e të gjithë grupit të të dhënave.
Seksioni që përmban të dhënat e mostrës në studim
Si rezultat, unë nuk rekomandoj t'i kushtoni vëmendje këtij seksioni të fundit. Në vend të kësaj, është më mirë të përdorni komandën df.sample(5)
, i cili do të zgjedhë rastësisht 5 vëzhgime nga grupi i të dhënave.
Rezultatet e
Për ta përmbledhur, biblioteka e profilit të pandave i jep analistit disa aftësi të dobishme që do t'ju vijnë në ndihmë në rastet kur ju duhet të merrni shpejt një ide të përafërt të të dhënave ose t'i kaloni dikujt një raport analize të inteligjencës. Në të njëjtën kohë, puna reale me të dhënat, duke marrë parasysh veçoritë e saj, kryhet, si pa përdorur profilimin e pandave, me dorë.
Nëse dëshironi të hidhni një sy se si duken të gjitha analizat e të dhënave të inteligjencës në një fletore Jupyter, hidhini një sy
Të nderuar lexues! Ku e filloni analizimin e grupeve të reja të të dhënave?
Burimi: www.habr.com