Accelerate l'analisi di dati esplorativa utilizendu a biblioteca di profilazione di panda

U primu passu quandu si principia à travaglià cù un novu settore di dati hè di capiscenu. Per fà questu, avete bisognu, per esempiu, di scopre i intervalli di valori accettati da e variàbili, i so tipi, è ancu di sapè u numeru di valori mancanti.

A biblioteca di pandas ci furnisce assai strumenti utili per fà l'analisi di dati esploratori (EDA). Ma prima di usà, avete bisognu di principià cù funzioni più generale cum'è df.describe(). Tuttavia, deve esse nutatu chì e capacità furnite da tali funzioni sò limitati, è e fasi iniziali di travaglià cù qualsiasi setti di dati quandu eseguisce EDA sò assai spessu assai simili à l'altri.

Accelerate l'analisi di dati esplorativa utilizendu a biblioteca di profilazione di panda

L'autore di u materiale chì publichemu oghje dice chì ùn hè micca un fan di fà azzione ripetitiva. In u risultatu, in cerca di arnesi per fà rapidamente è efficaci l'analisi di dati esploratori, truvò a biblioteca pandas-profiling. I risultati di u so travagliu sò spressi micca in a forma di certi indicatori individuali, ma in a forma di un rapportu HTML abbastanza detallatu chì cuntene a maiò parte di l'infurmazioni nantu à e dati analizati chì pudete bisognu di sapè prima di cumincià à travaglià più strettamente cun ellu.

Eccu avemu da vede e caratteristiche di l'usu di a biblioteca di profilazione di panda utilizendu u dataset Titanic cum'è un esempiu.

Analisi di dati esplorativa cù panda

Aghju decisu di sperimentà cù panda-profiling in u dataset Titanic per via di i diversi tipi di dati chì cuntene è a presenza di valori mancanti in questu. Credu chì a biblioteca di pandas-profiling hè particularmente interessante in i casi induve i dati ùn sò micca stati puliti è esige un prucessu ulteriore secondu e so caratteristiche. Per fà successu tali trasfurmazioni, avete bisognu di sapè da induve principià è ciò chì deve esse attentu. Hè quì chì e capacità di prufilu di panda sò utili.

Prima, impurtate e dati è usemu panda per ottene statistiche descrittive:

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

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

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

Dopu à esecutà stu pezzu di codice, vi darà ciò chì hè mostratu in a figura seguente.

Accelerate l'analisi di dati esplorativa utilizendu a biblioteca di profilazione di panda
Statistiche descrittive ottenute aduprendu strumenti standard pandas

Ancu s'ellu ci hè assai infurmazione utile quì, ùn cuntene micca tuttu ciò chì saria interessante di sapè nantu à e dati in studiu. Per esempiu, unu pò assume chì in un quadru di dati, in una struttura DataFrame, ci sò 891 linii. Se questu deve esse verificatu, allora una altra linea di codice hè necessaria per determinà a dimensione di u quadru. Mentre chì sti calculi ùn sò micca particularmente intensivi di risorse, a ripetizione di elli tuttu u tempu hè obligatu à perde u tempu chì puderia esse megliu spentu per pulisce e dati.

Analisi di dati esplorativa utilizendu pandas-profiling

Avà femu u listessu cù panda-profiling:

pandas_profiling.ProfileReport(df)

Eseguisce a linea di codice di sopra generà un rapportu cù indicatori di analisi di dati esploratori. U codice mostratu quì sopra hà da pruduce i dati truvati, ma pudete fà un schedariu HTML chì pudete vede à qualchissia, per esempiu.

A prima parte di u rapportu cuntene una sezione Overview, chì dà infurmazioni basi nantu à e dati (numeru di osservazioni, numeru di variàbili, etc.). Contenerà ancu una lista di alerti, avvisendu l'analista di e cose à pagà una attenzione particulari. Queste alerti ponu furnisce indizi di induve pudete focalizà i vostri sforzi di pulizia di dati.

Accelerate l'analisi di dati esplorativa utilizendu a biblioteca di profilazione di panda
Sezione di rapportu generale

Analisi Variabile Esplorativa

Sottu a sezione Panoramica di u rapportu pudete truvà infurmazioni utili nantu à ogni variabile. Includenu, frà altre cose, picculi charts chì descrizanu a distribuzione di ogni variàbile.

Accelerate l'analisi di dati esplorativa utilizendu a biblioteca di profilazione di panda
Circa a Variabile Numerica di l'Età

Comu pudete vede da l'esempiu precedente, i pandas-profiling ci duna parechji indicatori utili, cum'è u percentualità è u numeru di valori mancanti, è ancu e misure di statistiche descrittive chì avemu digià vistu. Perchè Age hè una variabile numerica, a visualizazione di a so distribuzione in a forma di un histogramma ci permette di cuncludi chì avemu una distribuzione skewed à a diritta.

Quandu si cunsiderà una variàbile categurica, i risultati di l'output sò ligeramente sfarente da quelli chì si trovanu per una variabile numerica.

Accelerate l'analisi di dati esplorativa utilizendu a biblioteca di profilazione di panda
À propositu di a variabile categurica Sex

Vale à dì, invece di truvà a media, u minimu è u massimu, a biblioteca di pandas-profiling hà truvatu u numeru di classi. Perchè Sex - una variabile binaria, i so valori sò rapprisentati da duie classi.

Se ti piace à esaminà u codice cum'è mè, pudete esse interessatu in quantu esattamente a libreria di profilazione di pandas calcula queste metriche. Scuprite nantu à questu, datu chì u codice di a biblioteca hè apertu è dispunibule nantu à GitHub, ùn hè micca cusì difficiule. Siccomu ùn sò micca un grande fan di utilizà scatuli neri in i mo prughjetti, aghju pigliatu un ochju à u codice fonte di a biblioteca. Per esempiu, questu hè ciò chì u mecanismu per processà e variàbili numerichi, rapprisintatu da a funzione descrizzione_numericu_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)

Ancu s'è stu pezzu di codice pò pari abbastanza grande è cumplessu, hè in realtà assai simplice di capiscenu. U puntu hè chì in u codice fonte di a biblioteca ci hè una funzione chì determina i tipi di variàbili. S'ellu ci hè chì a biblioteca hà scontru una variabile numerica, a funzione suprana truvarà e metriche chì avemu vistu. Questa funzione usa operazioni standard di panda per travaglià cù oggetti di tipu Series, cum'è series.mean(). I risultati di u calculu sò guardati in un dizziunariu stats. L'istogrammi sò generati cù una versione adattata di a funzione matplotlib.pyplot.hist. L'adattazione hè diretta à assicurà chì a funzione pò travaglià cù diversi tipi di setti di dati.

Indicatori di correlazione è dati di mostra studiati

Dopu à i risultati di l'analisi di e variàbili, pandas-profiling, in a sezione Correlations, mostrarà e matrici di correlazione Pearson è Spearman.

Accelerate l'analisi di dati esplorativa utilizendu a biblioteca di profilazione di panda
Matrice di correlazione di Pearson

In casu di necessariu, pudete, in a linea di codice chì attiva a generazione di u rapportu, stabilisce l'indicatori di i valori di soglia utilizati per u calculu di a correlazione. Fendu questu, pudete specificà quale forza di correlazione hè cunsiderata impurtante per a vostra analisi.

Infine, u rapportu di pandas-profiling, in a sezione Sample, mostra, per esempiu, un pezzu di dati pigliatu da u principiu di u settore di dati. Stu approcciu pò purtà à sorprese spiacevoli, postu chì e prime osservazioni ponu rapprisintà una mostra chì ùn riflette micca e caratteristiche di tuttu u settore di dati.

Accelerate l'analisi di dati esplorativa utilizendu a biblioteca di profilazione di panda
Sezione chì cuntene dati di mostra in studiu

In u risultatu, ùn ricumandemu micca attentu à questa ultima sezione. Invece, hè megliu aduprà u cumandamentu df.sample(5), chì selezziunà aleatoriamente 5 osservazioni da u settore di dati.

Risultati

Per riassume, a biblioteca di profilazione di pandas dà à l'analista alcune capacità utili chì vi saranu utili in i casi induve avete bisognu di ottene rapidamente una idea approssimativa di e dati o trasmette un rapportu di analisi di intelligenza à qualchissia. À u listessu tempu, u travagliu veru cù e dati, tenendu in contu e so funziunalità, hè realizatu, cum'è senza usà pandas-profiling, manually.

Se vulete guardà ciò chì tutte l'analisi di dati di intelligenza sò in un notebook Jupyter, fate un ochju à questu u mo prughjettu creatu cù nbviewer. È in questu Pudete truvà u codice currispundente in i repositori GitHub.

Beni, lettori! Induve cuminciate à analizà novi seti di dati?

Accelerate l'analisi di dati esplorativa utilizendu a biblioteca di profilazione di panda

Source: www.habr.com

Add a comment