L'Analisi Esplorativa dei Dati (EDA) è una fase fondamentale nel processo di analisi dei dati, che mira a esplorare e comprendere i modelli e le relazioni all'interno di un dataset prima di intraprendere analisi più approfondite o costruire modelli predittivi. EDA è essenziale per ottenere informazioni, individuare problemi di qualità dei dati e scegliere le migliori opzioni di preparazione dei dati. In questo capitolo, esamineremo le tecniche utilizzate in EDA per ottenere una comprensione profonda dei dati e delle sue caratteristiche.

EDA si concentra sul riepilogo delle proprietà principali dei dati, scoprendo i modelli sottostanti e identificando gli outlier o le anomalie. Il processo comprende l'uso di strumenti statistici e grafici per visualizzare i dati, rivelando informazioni significative. Le tecniche utilizzate includono statistiche descrittive, analisi della distribuzione dei dati, analisi di correlazione, riduzione dimensionale, oltre ad alcuni strumenti automatizzati di EDA come pandas profiling e d-tale.

Un passo cruciale nell'EDA è la raccolta dei dati da fonti diverse come scraping web, database, API, sondaggi e altro ancora. Dopo la raccolta, i dati devono essere puliti. Questo passaggio comporta la gestione dei valori mancanti, degli outlier, delle anomalie e la rimozione dei duplicati. Successivamente, l'esplorazione dei dati viene effettuata utilizzando statistiche descrittive, visualizzazioni e analisi di correlazione. Da queste esplorazioni, è possibile generare ipotesi e arrivare a un sommario delle scoperte più rilevanti.

Le statistiche descrittive sono uno degli strumenti principali in questa fase. Esse forniscono un riassunto numerico dei dati, calcolando misure di tendenza centrale come media, mediana e moda, e misure di dispersione come varianza e deviazione standard. Ad esempio, se analizziamo i dati sulle università mondiali, possiamo osservare le tendenze nella sostenibilità attraverso una variabile chiamata "Sustainability Score". L'analisi descrittiva di questa variabile ci permette di comprendere la distribuzione dei punteggi, come il valore massimo, la mediana, la media e la deviazione standard, evidenziando in questo caso che solo una minoranza delle università ottiene punteggi alti in sostenibilità.

Un altro strumento fondamentale per esplorare la distribuzione dei dati è l'analisi delle distribuzioni. Utilizzando strumenti come i grafici a istogramma, le curve di densità di probabilità (KDE), i grafici ECDF (Funzione di Distribuzione Cumulativa Empirica), e i grafici QQ, possiamo osservare come i dati sono distribuiti e se ci sono anomalie o particolarità nei dati. Ad esempio, un istogramma ci permette di vedere la distribuzione di una variabile, mentre un grafico KDE offre una rappresentazione continua della distribuzione dei dati. I grafici ECDF, d'altro canto, mostrano la proporzione di osservazioni che cadono al di sotto di ogni valore unico del dataset, mentre i grafici QQ confrontano due distribuzioni di probabilità.

Questi strumenti di visualizzazione e analisi statistica aiutano gli analisti a formare ipotesi sui dati e a identificare eventuali problemi o peculiarità prima di procedere con modelli statistici più complessi. Inoltre, l'analisi della correlazione tra le variabili permette di scoprire relazioni importanti, che potrebbero influire sulle decisioni o sulle previsioni future.

L'uso di strumenti automatizzati per EDA sta guadagnando popolarità. Strumenti come pandas profiling e d-tale semplificano l'analisi esplorativa dei dati, fornendo una panoramica immediata e dettagliata del dataset, inclusi suggerimenti sui possibili problemi con i dati e le correlazioni tra le variabili. Questi strumenti permettono di accelerare il processo di analisi, consentendo agli analisti di concentrarsi sulle parti più rilevanti e potenzialmente problematiche del dataset.

La riduzione dimensionale è un altro aspetto importante durante l'EDA. In molte situazioni, i dati contengono molte variabili, alcune delle quali potrebbero non essere significative per l'analisi. Tecniche come l'analisi delle componenti principali (PCA) o la t-SNE possono essere utilizzate per ridurre il numero di variabili e mantenere solo quelle che contano davvero, semplificando così l'analisi e migliorando la comprensione complessiva del dataset.

A volte, la comprensione visiva dei dati è fondamentale per individuare tendenze, pattern o gruppi simili. La visualizzazione dei dati attraverso grafici univariati, bivariati e multivariati consente di esplorare variabili singole, le loro relazioni con altre variabili e interazioni più complesse. Queste visualizzazioni non solo rivelano informazioni nascoste, ma rendono anche più facile comunicare i risultati agli stakeholder o a un pubblico non esperto.

L'analisi dei cluster è una tecnica utile quando si vogliono identificare gruppi simili all'interno dei dati. Identificare questi cluster può fornire intuizioni importanti, come la segmentazione di un mercato o la classificazione di variabili in gruppi distinti.

Un altro strumento cruciale per la visualizzazione dei dati è rappresentato dalle analisi di serie temporali. In scenari in cui i dati sono raccolti nel tempo, comprendere le tendenze e le fluttuazioni è fondamentale per prendere decisioni strategiche. Sebbene questo tema verrà trattato in modo più approfondito in un capitolo successivo, è importante notare che una buona analisi delle serie temporali può fare la differenza nelle previsioni future, soprattutto in contesti economici o finanziari.

L'analisi esplorativa dei dati non si limita solo a rivelare i problemi dei dati, ma aiuta anche a identificare le opportunità. Scoprire relazioni significative tra le variabili e osservare la distribuzione dei dati può offrire spunti su come migliorare i processi di raccolta dei dati, come aggiungere nuove variabili o correggere quelle che potrebbero essere errate.

Alla fine del processo di EDA, l'analista deve essere in grado di rispondere a domande cruciali come: quali sono le caratteristiche principali dei dati? Ci sono anomalie o problemi nei dati? Quali variabili sono più importanti e meriterebbero una maggiore attenzione nelle fasi successive dell'analisi?

Come si interpreta e si utilizza l’analisi statistica per la modellizzazione e la previsione

L’analisi statistica rappresenta un pilastro fondamentale per comprendere le relazioni tra variabili e per costruire modelli predittivi affidabili. La validità di un modello statistico si valuta innanzitutto attraverso test che mettono in discussione l’ipotesi nulla, la quale solitamente afferma che il modello senza variabili indipendenti spiega altrettanto bene i dati quanto il modello completo. Quando il valore p associato alla statistica F è basso, si rifiuta l’ipotesi nulla, confermando che almeno una delle variabili indipendenti è significativamente correlata alla variabile dipendente. Questo aspetto è essenziale per stabilire la rilevanza del modello nel rappresentare la realtà osservata.

Un ulteriore indicatore importante è il coefficiente R², che esprime la percentuale di varianza della variabile dipendente spiegata dal modello. Valori di R² elevati suggeriscono che il modello cattura una porzione sostanziale della variabilità, aumentando così la sua affidabilità predittiva. Questo è particolarmente utile per valutare la bontà di adattamento del modello ai dati a disposizione.

Nel contesto delle serie temporali, l’Augmented Dickey-Fuller (ADF) test riveste un ruolo cruciale per verificare la stazionarietà del dato, condizione necessaria per molte tecniche di modellizzazione temporale. Un valore di statistica ADF fortemente negativo, accompagnato da un p-value basso, permette di respingere l’ipotesi nulla di presenza di radici unitarie, indicando quindi che la serie è stazionaria e adatta per ulteriori analisi.

Le librerie di analisi statistica in Python, come Pandas, Numpy, Scipy, Statsmodels, Scikit-learn, PyMC3, Pingouin e PyStan, forniscono strumenti potenti e diversificati per l’analisi approfondita dei dati. Scipy estende Numpy con funzionalità avanzate, specialmente nel campo della statistica e dell’ottimizzazione, mentre Statsmodels è particolarmente indicato per la modellizzazione statistica e l’analisi diagnostica. Scikit-learn combina strumenti di machine learning con funzioni statistiche, facilitando l’addestramento, la validazione e l’ottimizzazione dei modelli predittivi. PyMC3 e PyStan consentono di adottare approcci bayesiani sofisticati per stimare distribuzioni posteriori e gestire l’incertezza nei modelli probabilistici. Pingouin, invece, si distingue per la semplicità con cui esegue test statistici complessi e produce output dettagliati.

Comprendere e identificare le relazioni tra variabili è alla base dell’analisi statistica. La correlazione misura la direzione e la forza del legame tra due variabili, che può essere positiva, negativa o nulla. La regressione permette di analizzare come varia la variabile dipendente al variare di una o più indipendenti, fornendo strumenti per predire, stimare errori e comprendere l’effetto congiunto delle variabili. Per le variabili categoriche associate a una variabile continua, l’ANOVA permette di individuare differenze significative tra i gruppi, evidenziando quali categorie hanno un impatto rilevante.

L’identificazione di caratteristiche rilevanti dai dati e la rimozione di quelle ridondanti o multicollineari è fondamentale per migliorare la qualità del modello e la sua interpretabilità. Infine, l’analisi statistica non si limita alla spiegazione del passato ma si spinge oltre, consentendo previsioni su eventi futuri basate su dati storici, un aspetto cruciale in molteplici ambiti applicativi, dalla finanza alla scienza sociale.

È importante ricordare che l’interpretazione dei risultati statistici richiede un’attenzione critica al contesto e alla natura dei dati. Le tecniche di analisi devono essere scelte in modo coerente con le ipotesi sottostanti e la qualità dei dati. La stazionarietà, l’assenza di multicollinearità e la validità delle assunzioni di normalità sono condizioni spesso indispensabili per garantire la correttezza delle conclusioni. Inoltre, la scelta tra modelli frequentisti e bayesiani dipende dagli obiettivi dell’analisi e dalla disponibilità di informazioni a priori, influenzando la robustezza e la flessibilità delle inferenze.

Come si identifica e interpreta la stagionalità e le componenti nelle serie temporali?

La stagionalità è un fenomeno ricorrente in dati osservati a intervalli regolari, tipicamente entro un arco temporale annuale, e si manifesta in molteplici ambiti come l’e-commerce, le vendite, la finanza, i trasporti e i cambiamenti climatici. Essa può essere di due tipi principali: additiva e moltiplicativa. Nel modello additivo, le variazioni lungo il tempo mantengono un’ampiezza costante in termini assoluti, mentre nel modello moltiplicativo l’entità delle variazioni si modifica proporzionalmente nel tempo, aumentando o diminuendo.

Le serie temporali sono costituite da tre componenti fondamentali: la tendenza (trend), la stagionalità e i residui. La funzione seasonal_decompose() della libreria statsmodels consente di scomporre una serie temporale in queste componenti, facilitando l’analisi approfondita del comportamento sottostante del dato. L’uso del modello additivo per la decomposizione permette di osservare come ciascuna componente contribuisca al valore osservato, mantenendo costante la magnitudine delle variazioni stagionali.

La tendenza rappresenta la direzione generale dei dati, che può essere crescente o decrescente, e si manifesta in fenomeni come l’aumento delle vendite durante le festività o la variazione dei livelli di inquinanti atmosferici in specifici periodi dell’anno. Ad esempio, l’analisi del livello di NO2 in una città italiana mostra una tendenza crescente dal novembre 2004 al marzo 2005, evidenziando l’importanza di isolare questa componente per comprendere dinamiche a lungo termine.

La stagionalità invece si manifesta come un ciclo ricorrente, ma può essere assente o poco evidente in alcuni dati. La sua identificazione è cruciale poiché aiuta a migliorare la precisione dei modelli previsionali, adattando la previsione alle fluttuazioni periodiche tipiche del fenomeno osservato. I residui rappresentano la componente casuale e imprevedibile della serie, in cui si concentrano le variazioni non spiegate dalla tendenza né dalla stagionalità, evidenziando la presenza o meno di rumore bianco.

L’autocorrelazione e la parziale autocorrelazione sono strumenti statistici essenziali per rilevare dipendenze e pattern all’interno della serie temporale. L’autocorrelazione misura la correlazione tra il valore attuale e i suoi precedenti a diversi ritardi (lag), evidenziando la persistenza delle condizioni nel tempo. Ad esempio, un’elevata autocorrelazione nei primi lag suggerisce che i valori recenti influenzano fortemente quelli attuali. La parziale autocorrelazione, invece, valuta la correlazione diretta tra i valori distanti k unità temporali, escludendo l’influenza di intermediari, ed è fondamentale per identificare il numero ottimale di lag da includere nei modelli autoregressivi.

Il rumore bianco rappresenta un segnale casuale privo di autocorrelazioni significative e con ampiezza costante su tutte le frequenze, spesso utilizzato come benchmark per confrontare modelli o per simulazioni. La sua natura imprevedibile e senza pattern strutturati aiuta a distinguere le componenti significative da quelle casuali nelle serie temporali.

Visualizzare i dati attraverso strumenti come il heatmap, che mostra le correlazioni tra variabili in un data frame, può fornire ulteriori approfondimenti sulle relazioni tra le diverse misure e facilitare l’identificazione di fenomeni latenti. L’uso di librerie specifiche come Seaborn per rappresentare graficamente la correlazione tra le variabili contribuisce a rendere più immediata l’interpretazione dei dati complessi.

Oltre a ciò, è fondamentale per il lettore comprendere che l’analisi delle serie temporali richiede una cura particolare nella scelta del modello più adatto al tipo di dati e alla loro struttura. La distinzione tra modelli additivi e moltiplicativi non è solo formale, ma determina il modo in cui si interpretano le variazioni e si costruiscono previsioni. Inoltre, l’identificazione della stagionalità non sempre è immediata e può richiedere l’esplorazione di finestre temporali diverse o tecniche di smoothing per evidenziare i pattern nascosti.

La capacità di distinguere tra trend, stagionalità e residui consente di migliorare notevolmente la qualità delle previsioni, adattando i modelli alle caratteristiche specifiche del fenomeno osservato. In particolare, la presenza di rumore bianco suggerisce limiti intrinseci nella prevedibilità del sistema, imponendo cautela nell’interpretazione dei risultati e nell’uso delle previsioni in contesti decisionali.

La comprensione approfondita di autocorrelazione e parziale autocorrelazione permette inoltre di selezionare parametri ottimali nei modelli autoregressivi e di media mobile, fondamentali per modellare correttamente la dinamica temporale dei dati. Senza questa fase preliminare, si rischia di sovra o sottostimare la complessità del sistema, compromettendo l’efficacia degli strumenti predittivi.

Come si costruisce una visualizzazione dati efficace e funzionale?

La coerenza nella narrazione visiva è il primo pilastro imprescindibile per ogni forma di rappresentazione dati che aspiri ad essere più di un semplice insieme di grafici accattivanti. Ogni mappa, diagramma o grafico deve mantenere un flusso continuo e logico per costruire una narrazione sincrona. La mancanza di coerenza spezza l’unità del racconto e obbliga lo spettatore a concentrarsi sul decifrare le immagini piuttosto che comprendere il messaggio sotteso. In contesti decisionali, questo è un lusso che non ci si può permettere: il dato deve parlare chiaro e subito.

L’interattività trasforma l’utente da osservatore passivo a protagonista attivo dell’analisi. Inserire elementi come cursori per visualizzare l’evoluzione temporale di un dato, menu a tendina per selezionare categorie o filtri dinamici per raffinare la visualizzazione, consente di esplorare la complessità informativa in modo modulare e personalizzato. L’interazione rafforza il legame cognitivo tra l’utente e il dato, rendendo l’esperienza più memorabile e significativa.

Il contesto, infine, è ciò che dà senso all’immagine. Una visualizzazione priva di legenda, colori coerenti o annotazioni descrittive è come una frase senza verbi né punteggiatura. L’uso consapevole della semantica cromatica, delle etichette e delle annotazioni puntuali rende il dato accessibile e ne facilita l’interpretazione. Una buona visualizzazione non richiede una guida: si spiega da sola.

Ma prima di costruire una narrazione visiva, occorre scegliere il linguaggio visivo corretto. Non esiste un grafico “migliore in assoluto”, ma piuttosto una forma adatta a ogni tipo di messaggio. Il diagramma a barre è indicato per confronti tra categorie; quello a linee è essenziale per rappresentare serie temporali e tendenze. Il grafico a torta, sebbene spesso abusato, può essere utile per evidenziare proporzioni all’interno di un insieme limitato. I grafici a dispersione rivelano relazioni tra variabili continue, mettendo in luce outlier o correlazioni. Gli istogrammi descrivono distribuzioni di frequenze su intervalli numerici. Le heatmap, infine, permettono di cogliere relazioni complesse all’interno di matrici, sfruttando gradienti cromatici per sintetizzare densità e concentrazione di valori.

La realizzazione tecnica di queste visualizzazioni si fonda su strumenti specifici. Python è oggi il linguaggio più adottato nel campo dell’analisi dei dati e dell’apprendimento automatico. Open-source, versatile e supportato da una comunità ampia, offre librerie potenti come pandas, numpy, matplotlib, seaborn, plotly. L’ambiente di sviluppo più comodo per iniziare è Anaconda: una distribuzione di Python preconfigurata che include un ecosistema completo per l’analisi dati.

L’installazione di Anaconda è semplice e fornisce anche una GUI chiamata Anaconda Navigator, utile per chi non è familiare con la riga di comando. Il gestore di pacchetti conda consente di installare, aggiornare e isolare ambienti di lavoro distinti, evitando conflitti tra versioni diverse di librerie o linguaggi.

Una volta installato Anaconda, si può creare un ambiente virtuale con:

lua
conda create --name myenv python=3.9 pandas numpy matplotlib scipy plotly seaborn

e attivarlo con:

nginx
conda activate myenv

Da qui, basta avviare un notebook Jupyter scrivendo:

nginx
jupyter notebook

Il notebook si apre nel browser e fornisce un’interfaccia intuitiva per scrivere codice, annotazioni, visualizzare grafici e documentare l’intero processo analitico. Le funzioni essenziali di Jupyter – creare celle, eseguirle, inserire testo o codice – trasformano l’ambiente in un vero laboratorio interattivo di esplorazione dati.

Caricare un dataset in formato .csv è immediato:

python
import pandas as pd df = pd.read_csv('nome_file.csv')

df è ora un DataFrame: una tabella bidimensionale con righe e colonne, analoga a un foglio di calcolo ma estremamente più flessibile e potente. Questo oggetto è il cuore dell’analisi: su di esso si applicano trasformazioni, si effettuano raggruppamenti, si costruiscono visualizzazioni.

Il primo passo dopo il caricamento è l’esplorazione preliminare: osservare le prime righe (df.head()), controllare la presenza di valori nulli (df.isnull().sum()), e analizzare i tipi di variabili (df.dtypes). In seguito, si può passare alla costruzione di grafici, filtraggio dei dati, e calcoli statistici, usando le librerie precedentemente installate.

Ma un elemento spesso trascurato è la consapevolezza del pubblico di destinazione. La visualizzazione non è fine a sé stessa: serve a comunicare. Pertanto, chi costruisce visualizzazioni deve sempre porsi domande fondamentali: chi le guarderà? Con quale background? Con quale obiettivo? Solo da queste risposte si può derivare una forma narrativa che sia realmente efficace.

Infine, è fondamentale comprendere che la visualizzazione non è solo uno strumento per comunicare risultati: è un mezzo per pensare. Visualizzare significa spesso vedere ciò che non si può notare con una tabella o una media. È un atto esplorativo, un’ipotesi grafica, una forma di ragionamento. In quest’ottica, ogni visualizzazione è già parte dell’analisi, non solo la sua conclusione.