Paātriniet izpētes datu analīzi, izmantojot pandu profilēšanas bibliotēku

Pirmais solis, uzsākot darbu ar jaunu datu kopu, ir to saprast. Lai to izdarītu, jums, piemēram, ir jānoskaidro mainīgo pieņemto vērtību diapazoni, to veidi, kā arī jānoskaidro trūkstošo vērtību skaits.

Pandas bibliotēka sniedz mums daudz noderīgu rīku izpētes datu analīzes (EDA) veikšanai. Bet pirms to izmantošanas parasti jāsāk ar vispārīgākām funkcijām, piemēram, df.describe(). Tomēr jāņem vērā, ka šādu funkciju sniegtās iespējas ir ierobežotas, un sākotnējie posmi darbam ar jebkādām datu kopām, veicot EDA, ļoti bieži ir ļoti līdzīgi viens otram.

Paātriniet izpētes datu analīzi, izmantojot pandu profilēšanas bibliotēku

Šodien publicējamā materiāla autors saka, ka nav atkārtotu darbību veikšanas cienītājs. Tā rezultātā, meklējot rīkus, lai ātri un efektīvi veiktu izpētes datu analīzi, viņš atrada bibliotēku pandas profilēšana. Tās darba rezultāti tiek izteikti nevis noteiktu atsevišķu rādītāju veidā, bet gan diezgan detalizēta HTML pārskata veidā, kas satur lielāko daļu informācijas par analizētajiem datiem, kas jums, iespējams, būs jāzina, pirms sākat ar tiem strādāt ciešāk.

Šeit mēs apskatīsim pandas profilēšanas bibliotēkas izmantošanas iespējas, kā piemēru izmantojot Titānika datu kopu.

Izpētes datu analīze, izmantojot pandas

Es nolēmu eksperimentēt ar pandu profilēšanu Titānika datu kopā, jo tajā ir dažādi datu veidi un tajā ir trūkstošās vērtības. Uzskatu, ka pandu profilēšanas bibliotēka ir īpaši interesanta gadījumos, kad dati vēl nav iztīrīti un ir nepieciešama tālāka apstrāde atkarībā no to īpašībām. Lai veiksmīgi veiktu šādu apstrādi, ir jāzina, ar ko sākt un kam pievērst uzmanību. Šeit noder pandu profilēšanas iespējas.

Pirmkārt, mēs importējam datus un izmantojam pandas, lai iegūtu aprakstošu statistiku:

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

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

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

Pēc šīs koda daļas izpildīšanas jūs iegūsit to, kas parādīts nākamajā attēlā.

Paātriniet izpētes datu analīzi, izmantojot pandu profilēšanas bibliotēku
Aprakstoša statistika, kas iegūta, izmantojot standarta pandas rīkus

Lai gan šeit ir daudz noderīgas informācijas, tajā nav ietverts viss, ko būtu interesanti uzzināt par pētāmajiem datiem. Piemēram, var pieņemt, ka datu rāmī, struktūrā DataFrame, ir 891 rinda. Ja tas ir jāpārbauda, ​​tad, lai noteiktu rāmja izmēru, ir nepieciešama cita koda rindiņa. Lai gan šie aprēķini nav īpaši resursietilpīgi, tos visu laiku atkārtojot, tiek zaudēts laiks, ko, iespējams, varētu labāk iztērēt datu tīrīšanai.

Izpētes datu analīze, izmantojot pandu profilēšanu

Tagad darīsim to pašu, izmantojot pandas profilēšanu:

pandas_profiling.ProfileReport(df)

Izpildot iepriekš minēto koda rindiņu, tiks ģenerēts pārskats ar izpētes datu analīzes indikatoriem. Iepriekš redzamais kods izvadīs atrastos datus, taču varat likt tam izvadīt HTML failu, ko, piemēram, varat parādīt kādam.

Pārskata pirmajā daļā būs sadaļa Pārskats, kurā sniegta pamatinformācija par datiem (novērojumu skaits, mainīgo lielumu skaits utt.). Tajā būs arī brīdinājumu saraksts, informējot analītiķi par lietām, kurām jāpievērš īpaša uzmanība. Šie brīdinājumi var sniegt norādes par to, kur varat koncentrēt savus datu tīrīšanas pasākumus.

Paātriniet izpētes datu analīzi, izmantojot pandu profilēšanas bibliotēku
Pārskata pārskata sadaļa

Izpētes mainīgo analīze

Zem pārskata sadaļas Pārskats varat atrast noderīgu informāciju par katru mainīgo. Tajos, cita starpā, ir iekļautas nelielas diagrammas, kurās aprakstīts katra mainīgā lieluma sadalījums.

Paātriniet izpētes datu analīzi, izmantojot pandu profilēšanas bibliotēku
Par vecuma skaitlisko mainīgo

Kā redzat no iepriekšējā piemēra, pandu profilēšana sniedz mums vairākus noderīgus rādītājus, piemēram, trūkstošo vērtību procentuālo daudzumu un skaitu, kā arī aprakstošos statistikas rādītājus, ko mēs jau esam redzējuši. Jo Age ir skaitlisks mainīgais, tā sadalījuma vizualizācija histogrammas veidā ļauj secināt, ka mums ir sadalījums šķībs pa labi.

Apsverot kategorisko mainīgo, izvades rezultāti nedaudz atšķiras no tiem, kas iegūti skaitliskajam mainīgajam.

Paātriniet izpētes datu analīzi, izmantojot pandu profilēšanas bibliotēku
Par dzimuma kategorisko mainīgo

Proti, tā vietā, lai atrastu vidējo, minimālo un maksimālo, pandu profilēšanas bibliotēka atrada klašu skaitu. Jo Sex — binārs mainīgais, tā vērtības attēlo divas klases.

Ja vēlaties pārbaudīt kodu tāpat kā es, jūs varētu interesēt, kā tieši pandu profilēšanas bibliotēka aprēķina šos rādītājus. To uzzināt, ņemot vērā, ka bibliotēkas kods ir atvērts un pieejams vietnē GitHub, nav tik grūti. Tā kā es neesmu liels melno kastu izmantošanas cienītājs savos projektos, es ieskatījos bibliotēkas avota kodā. Piemēram, šādi izskatās skaitlisko mainīgo apstrādes mehānisms, ko attēlo funkcija aprakstiet_ciparu_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)

Lai gan šī koda daļa var šķist diezgan liela un sarežģīta, patiesībā to ir ļoti vienkārši saprast. Lieta tāda, ka bibliotēkas avota kodā ir funkcija, kas nosaka mainīgo veidus. Ja izrādās, ka bibliotēka ir saskārusies ar skaitlisku mainīgo, iepriekš minētā funkcija atradīs metriku, kuru mēs skatījāmies. Šī funkcija izmanto standarta pandas darbības darbam ar šāda veida objektiem Series, patīk series.mean(). Aprēķinu rezultāti tiek saglabāti vārdnīcā stats. Histogrammas tiek ģenerētas, izmantojot pielāgotu funkcijas versiju matplotlib.pyplot.hist. Adaptācijas mērķis ir nodrošināt, ka funkcija var darboties ar dažāda veida datu kopām.

Izpētīti korelācijas rādītāji un izlases dati

Pēc mainīgo lielumu analīzes rezultātiem pandu profilēšana sadaļā Korelācijas parādīs Pīrsona un Spīrmena korelācijas matricas.

Paātriniet izpētes datu analīzi, izmantojot pandu profilēšanas bibliotēku
Pīrsona korelācijas matrica

Ja nepieciešams, koda rindā, kas aktivizē pārskata ģenerēšanu, varat iestatīt korelācijas aprēķināšanā izmantoto sliekšņa vērtību rādītājus. To darot, varat norādīt, kāds korelācijas stiprums tiek uzskatīts par svarīgu jūsu analīzei.

Visbeidzot, pandu profilēšanas pārskatā sadaļā Paraugs kā piemērs tiek parādīta datu daļa, kas ņemta no datu kopas sākuma. Šī pieeja var radīt nepatīkamus pārsteigumus, jo daži pirmie novērojumi var būt paraugs, kas neatspoguļo visas datu kopas īpašības.

Paātriniet izpētes datu analīzi, izmantojot pandu profilēšanas bibliotēku
Sadaļa, kurā ir pētāmo datu paraugi

Rezultātā es neiesaku pievērst uzmanību šai pēdējai sadaļai. Tā vietā labāk ir izmantot komandu df.sample(5), kas nejauši izvēlēsies 5 novērojumus no datu kopas.

Rezultāti

Rezumējot, pandu profilēšanas bibliotēka sniedz analītiķim dažas noderīgas iespējas, kas noderēs gadījumos, kad jums ātri jāiegūst aptuvens priekšstats par datiem vai jānodod kādam izlūkošanas analīzes ziņojums. Tajā pašā laikā reāls darbs ar datiem, ņemot vērā to īpašības, tiek veikts manuāli, tāpat kā neizmantojot pandas profilēšanu.

Ja vēlaties apskatīt, kā izskatās visa izlūkošanas datu analīze vienā Jupyter piezīmju grāmatiņā, apskatiet šis mans projekts, kas izveidots, izmantojot nbviewer. Un iekšā šis Atbilstošo kodu varat atrast GitHub krātuvēs.

Cienījamie lasītāji! Kur jūs sākat analizēt jaunas datu kopas?

Paātriniet izpētes datu analīzi, izmantojot pandu profilēšanas bibliotēku

Avots: www.habr.com

Pievieno komentāru