Cyflymu dadansoddiad data archwiliadol gan ddefnyddio llyfrgell proffilio pandas

Y cam cyntaf wrth ddechrau gweithio gyda set ddata newydd yw ei ddeall. Er mwyn gwneud hyn, mae angen i chi, er enghraifft, ddarganfod yr ystodau o werthoedd a dderbynnir gan y newidynnau, eu mathau, a hefyd darganfod nifer y gwerthoedd coll.

Mae'r llyfrgell pandas yn rhoi llawer o offer defnyddiol i ni ar gyfer perfformio dadansoddiad data archwiliadol (EDA). Ond cyn i chi eu defnyddio, fel arfer mae angen i chi ddechrau gyda swyddogaethau mwy cyffredinol fel df.describe(). Fodd bynnag, dylid nodi bod y galluoedd a ddarperir gan swyddogaethau o'r fath yn gyfyngedig, ac mae'r camau cychwynnol o weithio gydag unrhyw setiau data wrth berfformio EDA yn aml iawn yn debyg iawn i'w gilydd.

Cyflymu dadansoddiad data archwiliadol gan ddefnyddio llyfrgell proffilio pandas

Mae awdur y deunydd rydyn ni'n ei gyhoeddi heddiw yn dweud nad yw'n gefnogwr o berfformio gweithredoedd ailadroddus. O ganlyniad, wrth chwilio am offer i berfformio dadansoddiad data archwiliadol yn gyflym ac yn effeithlon, daeth o hyd i'r llyfrgell pandas-proffilio. Mynegir canlyniadau ei waith nid ar ffurf rhai dangosyddion unigol, ond ar ffurf adroddiad HTML eithaf manwl sy'n cynnwys y rhan fwyaf o'r wybodaeth am y data a ddadansoddwyd y gallai fod angen i chi ei wybod cyn dechrau gweithio'n agosach ag ef.

Yma byddwn yn edrych ar nodweddion defnyddio'r llyfrgell proffilio pandas gan ddefnyddio set ddata Titanic fel enghraifft.

Dadansoddi data archwiliadol gan ddefnyddio pandas

Penderfynais arbrofi gyda phroffilio pandas ar set ddata Titanic oherwydd y gwahanol fathau o ddata sydd ynddo a phresenoldeb gwerthoedd coll ynddo. Credaf fod y llyfrgell proffilio pandas yn arbennig o ddiddorol mewn achosion lle nad yw'r data wedi'i lanhau eto ac mae angen ei brosesu ymhellach yn dibynnu ar ei nodweddion. Er mwyn perfformio prosesu o'r fath yn llwyddiannus, mae angen i chi wybod ble i ddechrau a beth i roi sylw iddo. Dyma lle mae galluoedd proffilio pandas yn ddefnyddiol.

Yn gyntaf, rydym yn mewnforio'r data ac yn defnyddio pandas i gael ystadegau disgrifiadol:

# ΠΈΠΌΠΏΠΎΡ€Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²
import pandas as pd
import pandas_profiling
import numpy as np

# ΠΈΠΌΠΏΠΎΡ€Ρ‚ Π΄Π°Π½Π½Ρ‹Ρ…
df = pd.read_csv('/Users/lukas/Downloads/titanic/train.csv')

# вычислСниС ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ статистики
df.describe()

Ar Γ΄l gweithredu'r darn hwn o god, fe gewch yr hyn a ddangosir yn y ffigur canlynol.

Cyflymu dadansoddiad data archwiliadol gan ddefnyddio llyfrgell proffilio pandas
Ystadegau disgrifiadol a gafwyd gan ddefnyddio offer pandas safonol

Er bod llawer o wybodaeth ddefnyddiol yma, nid yw'n cynnwys popeth a fyddai'n ddiddorol gwybod am y data sy'n cael ei astudio. Er enghraifft, gellid tybio hynny mewn ffrΓ’m ddata, mewn strwythur DataFrame, y mae 891 o linellau. Os oes angen gwirio hyn, yna mae angen llinell arall o god i bennu maint y ffrΓ’m. Er nad yw'r cyfrifiadau hyn yn arbennig o ddwys o ran adnoddau, mae eu hailadrodd drwy'r amser yn siΕ΅r o wastraffu amser y mae'n debyg y byddai'n well ei dreulio'n glanhau'r data.

Dadansoddi data archwiliadol gan ddefnyddio proffilio pandas

Nawr, gadewch i ni wneud yr un peth gan ddefnyddio proffilio pandas:

pandas_profiling.ProfileReport(df)

Bydd gweithredu'r llinell cod uchod yn cynhyrchu adroddiad gyda dangosyddion dadansoddi data archwiliadol. Bydd y cod a ddangosir uchod yn allbynnu'r data a ddarganfuwyd, ond gallwch wneud iddo allbynnu ffeil HTML y gallwch ei ddangos i rywun, er enghraifft.

Bydd rhan gyntaf yr adroddiad yn cynnwys adran Trosolwg, yn rhoi gwybodaeth sylfaenol am y data (nifer yr arsylwadau, nifer y newidynnau, ac ati). Bydd hefyd yn cynnwys rhestr o rybuddion, yn hysbysu'r dadansoddwr o bethau i roi sylw arbennig iddynt. Gall y rhybuddion hyn roi cliwiau ynghylch ble y gallwch ganolbwyntio eich ymdrechion glanhau data.

Cyflymu dadansoddiad data archwiliadol gan ddefnyddio llyfrgell proffilio pandas
Adran adroddiad trosolwg

Dadansoddiad Amrywiol Archwiliadol

O dan adran Trosolwg yr adroddiad gallwch ddod o hyd i wybodaeth ddefnyddiol am bob newidyn. Maent yn cynnwys, ymhlith pethau eraill, siartiau bach sy'n disgrifio dosbarthiad pob newidyn.

Cyflymu dadansoddiad data archwiliadol gan ddefnyddio llyfrgell proffilio pandas
Am yr Oedran Rhifol Newidyn

Fel y gallwch weld o'r enghraifft flaenorol, mae proffilio pandas yn rhoi sawl dangosydd defnyddiol inni, megis canran a nifer y gwerthoedd coll, yn ogystal Γ’'r mesurau ystadegau disgrifiadol yr ydym eisoes wedi'u gweld. Achos Age yn newidyn rhifiadol, mae delweddu ei ddosraniad ar ffurf histogram yn ein galluogi i ddod i'r casgliad bod gennym ddosraniad yn gwyro i'r dde.

Wrth ystyried newidyn categorΓ―aidd, mae'r canlyniadau allbwn ychydig yn wahanol i'r rhai a geir ar gyfer newidyn rhifol.

Cyflymu dadansoddiad data archwiliadol gan ddefnyddio llyfrgell proffilio pandas
Am y newidyn categorΓ―aidd Rhyw

Sef, yn lle dod o hyd i'r cyfartaledd, lleiafswm ac uchafswm, canfu'r llyfrgell proffilio pandas nifer y dosbarthiadau. Achos Sex β€” newidyn deuaidd, mae ei werthoedd yn cael eu cynrychioli gan ddau ddosbarth.

Os hoffech chi archwilio cod fel yr wyf i, efallai y byddai gennych ddiddordeb mewn sut yn union y mae'r llyfrgell proffilio pandas yn cyfrifo'r metrigau hyn. Nid yw dod i wybod am hyn, o ystyried bod cod y llyfrgell ar agor ac ar gael ar GitHub, mor anodd. Gan nad wyf yn gefnogwr mawr o ddefnyddio blychau du yn fy mhrosiectau, cymerais olwg ar god ffynhonnell y llyfrgell. Er enghraifft, dyma sut olwg sydd ar y mecanwaith ar gyfer prosesu newidynnau rhifol, a gynrychiolir gan y swyddogaeth disgrifio_rhif_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)

Er y gall y darn hwn o god ymddangos yn eithaf mawr a chymhleth, mewn gwirionedd mae'n syml iawn i'w ddeall. Y pwynt yw bod yna swyddogaeth yng nghod ffynhonnell y llyfrgell sy'n pennu'r mathau o newidynnau. Os yw'n ymddangos bod y llyfrgell wedi dod ar draws newidyn rhifol, bydd y swyddogaeth uchod yn dod o hyd i'r metrigau yr oeddem yn edrych arnynt. Mae'r swyddogaeth hon yn defnyddio gweithrediadau pandas safonol ar gyfer gweithio gyda gwrthrychau o fath Series, fel series.mean(). Mae canlyniadau cyfrifo yn cael eu storio mewn geiriadur stats. Cynhyrchir histogramau gan ddefnyddio fersiwn wedi'i addasu o'r ffwythiant matplotlib.pyplot.hist. Mae addasu wedi'i anelu at sicrhau y gall y swyddogaeth weithio gyda gwahanol fathau o setiau data.

Astudiwyd dangosyddion cydberthynas a data sampl

Ar Γ΄l canlyniadau'r dadansoddiad o'r newidynnau, bydd proffilio pandas, yn yr adran Cydberthynas, yn arddangos matricsau cydberthynas Pearson a Spearman.

Cyflymu dadansoddiad data archwiliadol gan ddefnyddio llyfrgell proffilio pandas
Matrics cydberthynas Pearson

Os oes angen, gallwch chi, yn y llinell god sy'n sbarduno cynhyrchu'r adroddiad, osod dangosyddion y gwerthoedd trothwy a ddefnyddir wrth gyfrifo'r gydberthynas. Drwy wneud hyn, gallwch nodi pa gryfder cydberthynas a ystyrir yn bwysig ar gyfer eich dadansoddiad.

Yn olaf, mae'r adroddiad proffilio pandas, yn yr adran Sampl, yn dangos, fel enghraifft, ddarn o ddata a gymerwyd o ddechrau'r set ddata. Gall y dull hwn arwain at bethau annisgwyl annymunol, oherwydd gall yr ychydig arsylwadau cyntaf gynrychioli sampl nad yw'n adlewyrchu nodweddion y set ddata gyfan.

Cyflymu dadansoddiad data archwiliadol gan ddefnyddio llyfrgell proffilio pandas
Adran yn cynnwys data sampl sy'n cael ei astudio

O ganlyniad, nid wyf yn argymell talu sylw i'r adran olaf hon. Yn lle hynny, mae'n well defnyddio'r gorchymyn df.sample(5), a fydd yn dewis 5 arsylwad ar hap o'r set ddata.

Canlyniadau

I grynhoi, mae'r llyfrgell proffilio pandas yn rhoi rhai galluoedd defnyddiol i'r dadansoddwr a fydd yn ddefnyddiol mewn achosion lle mae angen i chi gael syniad bras o'r data yn gyflym neu drosglwyddo adroddiad dadansoddi cudd-wybodaeth i rywun. Ar yr un pryd, mae gwaith go iawn gyda data, gan ystyried ei nodweddion, yn cael ei berfformio, fel heb ddefnyddio proffilio pandas, Γ’ llaw.

Os ydych chi am edrych ar sut olwg sydd ar yr holl ddadansoddiadau data cudd-wybodaeth mewn un llyfr nodiadau Jupyter, edrychwch arno hyn creodd fy mhrosiect gan ddefnyddio nbviewer. Ac yn hyn Gallwch ddod o hyd i'r cod cyfatebol yn ystorfeydd GitHub.

Annwyl ddarllenwyr! Ble ydych chi'n dechrau dadansoddi setiau data newydd?

Cyflymu dadansoddiad data archwiliadol gan ddefnyddio llyfrgell proffilio pandas

Ffynhonnell: hab.com

Ychwanegu sylw