Modelos Estatísticos
L’analisi dei dati è il processo di ispezione, pulizia, trasformazione e modellazione dei dati con l’obiettivo di scoprire informazioni utili, suggerire conclusioni e supportare il processo decisionale. In un’era dominata dai dati, la capacità di estrarre valore dalle informazioni è diventata una competenza fondamentale in tutti i settori.
Il Processo di Analisi dei Dati
1. Definizione degli Obiettivi
- Identificare le domande a cui si vuole rispondere
- Definire le metriche di successo
- Comprendere il contesto aziendale/scientifico
2. Raccolta dei Dati
- Fonti di dati: Database, API, Web Scraping, File (CSV, Excel, JSON)
- Strumenti: Python (requests, BeautifulSoup), SQL, Google Analytics
- Considerazioni etiche: Privacy, conformità al GDPR, consenso
3. Pulizia e Preprocessing
Gestione dei Dati Mancanti
- Identificazione:
df.isnull().sum()
- Strategie:
- Rimozione:
df.dropna()
- Imputazione: Media/Mediana/Moda
- Predizione: Modelli di machine learning
- Rimozione:
Gestione degli Outlier
- Identificazione:
- Box plot
- Punteggi Z:
z = (x - μ) / σ
- IQR:
Q1 - 1.5*IQR
eQ3 + 1.5*IQR
- Strategie:
- Rimozione
- Trasformazione (log, sqrt)
- Capping/Winsorizing
Trasformazione dei Dati
- Normalizzazione: Min-Max, Z-score
- Codifica variabili categoriche: One-Hot, Label Encoding
- Feature engineering: Creazione di nuove variabili
4. Esplorazione dei Dati (EDA)
Statistiche Descrittive
df.describe()
df.info()
df.nunique()
Analisi delle Correlazioni
# Matrice di correlazione
corr_matrix = df.corr()
plt.figure(figsize=(12, 8))
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm', center=0)
plt.title('Matrice di Correlazione')
plt.xlabel('Variabile')
plt.ylabel('Variabile')
plt.show()
Visualizzazioni Esplorative
- Distribuzioni: Istogrammi, KDE
- Relazioni: Scatter plot, Pair plot
- Andamenti: Line plot, Area plot
- Confronti: Bar plot, Box plot, Violin plot
5. Modellazione
Scelta del Modello
- Supervisionato: Regressione, Classificazione
- Non supervisionato: Clustering, Riduzione dimensionalità
- Rinforzo: Apprendimento per rinforzo
Valutazione dei Modelli
- Regressione: MSE, RMSE, R²
- Classificazione: Accuratezza, Precisione, Recall, F1, AUC-ROC
- Clustering: Silhouette Score, Inertia
6. Comunicazione dei Risultati
- Dashboard interattive
- Report esecutivi
- Presentazioni efficaci
- Storytelling con i dati
Esempio Pratico: Analisi di un Dataset di Vendite
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
from sklearn.decomposition import PCA
# Configurazione stile
plt.style.use('seaborn')
sns.set_palette('pastel')
# 1. Caricamento dei dati
df = pd.read_csv('vendite.csv', parse_dates=['Data_Acquisto'])
# 2. Esplorazione iniziale
print("\nInformazioni sul dataset:")
print(df.info())
print("\nStatistiche descrittive:")
print(df.describe())
print("\nValori mancanti:")
print(df.isnull().sum())
# 3. Pulizia dei dati
# Gestione valori mancanti
df['Fascia_Eta'] = df['Fascia_Eta'].fillna('Sconosciuta')
df['Valore_Acquisto'] = df['Valore_Acquisto'].fillna(df['Valore_Acquisto'].median())
# Conversione tipi di dato
df['Cliente_ID'] = df['Cliente_ID'].astype(str)
# 4. Analisi temporale
# Estrazione anno e mese
df['Anno'] = df['Data_Acquisto'].dt.year
df['Mese'] = df['Data_Acquisto'].dt.month
# Vendite per mese
vendite_mensili = df.groupby(['Anno', 'Mese'])['Valore_Acquisto'].sum().reset_index()
plt.figure(figsize=(12, 6))
sns.lineplot(data=vendite_mensili, x='Mese', y='Valore_Acquisto', hue='Anno',
marker='o', linewidth=2.5)
plt.title('Andamento delle Vendite Mensili')
plt.xlabel('Mese')
plt.ylabel('Vendite Totali (€)')
plt.xticks(range(1, 13))
plt.grid(True, alpha=0.3)
plt.legend(title='Anno')
plt.tight_layout()
plt.show()
# 5. Analisi della clientela
# Segmentazione RFM (Recency, Frequency, Monetary)
import datetime as dt
# Data di riferimento (ultima data disponibile + 1 giorno)
max_date = df['Data_Acquisto'].max() + dt.timedelta(days=1)
# Calcolo metriche RFM
rfm = df.groupby('Cliente_ID').agg({
'Data_Acquisto': lambda x: (max_date - x.max()).days, # Recency
'ID_Acquisto': 'count', # Frequency
'Valore_Acquisto': 'sum' # Monetary
}).reset_index()
rfm.columns = ['Cliente_ID', 'Recency', 'Frequency', 'Monetary']
# Normalizzazione delle metriche
scaler = StandardScaler()
rfm_scaled = scaler.fit_transform(rfm[['Recency', 'Frequency', 'Monetary']])
# Clustering con K-means
kmeans = KMeans(n_clusters=4, random_state=42)
rfm['Cluster'] = kmeans.fit_predict(rfm_scaled)
# Visualizzazione con PCA
pca = PCA(n_components=2)
rfm_pca = pca.fit_transform(rfm_scaled)
rfm['PCA1'] = rfm_pca[:, 0]
rfm['PCA2'] = rfm_pca[:, 1]
plt.figure(figsize=(10, 8))
sns.scatterplot(data=rfm, x='PCA1', y='PCA2', hue='Cluster',
palette='viridis', s=100, alpha=0.7)
plt.title('Segmentazione Clienti con PCA')
plt.xlabel('Componente Principale 1')
plt.ylabel('Componente Principale 2')
plt.grid(True, alpha=0.3)
plt.legend(title='Cluster')
plt.tight_layout()
plt.show()
# 6. Analisi dei prodotti più venduti
prodotti_popolari = df['Prodotto'].value_counts().head(10)
plt.figure(figsize=(12, 6))
sns.barplot(x=prodotti_popolari.values, y=prodotti_popolari.index,
palette='viridis')
plt.title('Top 10 Prodotti più Venduti')
plt.xlabel('Quantità Venduta')
plt.ylabel('Prodotto')
plt.tight_layout()
plt.show()
# 7. Analisi del valore per prodotto
valore_prodotti = df.groupby('Prodotto')['Valore_Acquisto'].sum().nlargest(10)
plt.figure(figsize=(12, 6))
sns.barplot(x=valore_prodotti.values, y=valore_prodotti.index,
palette='plasma')
plt.title('Top 10 Prodotti per Fatturato')
plt.xlabel('Fatturato Totale (€)')
plt.ylabel('Prodotto')
plt.tight_layout()
plt.show()
Strumenti Avanzati per l’Analisi dei Dati
Linguaggi di Programmazione
- Python: Pandas, NumPy, SciPy, Scikit-learn, TensorFlow, PyTorch
- R: Tidyverse (dplyr, ggplot2), caret, shiny
- SQL: Per l’analisi di grandi dataset
Piattaforme di Visualizzazione
- Tableau: Per dashboard interattive
- Power BI: Soluzione Microsoft per il business intelligence
- Plotly/Dash: Per creare dashboard web interattive con Python
- Metabase: Strumento open source per il self-service BI
Big Data
- Apache Spark: Elaborazione distribuita di grandi dataset
- Hadoop: Framework per l’elaborazione distribuita
- Dask: Computazione parallela in Python
Best Practices
Gestione del Codice
- Version Control: Utilizzare Git per il controllo versione
- Documentazione: Commentare il codice e mantenere un README aggiornato
- Modularità: Scrivere funzioni riutilizzabili
- Testing: Implementare test automatici
Riproducibilità
- Ambienti Virtuali: Usare virtualenv, conda o Docker
- File di Configurazione: Separare i parametri dal codice
- Random Seed: Impostare il seed per la riproducibilità
Etica e Privacy
- Anonimizzazione: Rimuovere o offuscare i dati sensibili
- Consenso: Rispettare le normative sulla privacy (GDPR)
- Bias: Essere consapevoli dei potenziali bias nei dati
Esercizi Pratici
Esercizio 1: Analisi Esplorativa
Scarica un dataset da Kaggle e:
- Esegui un’analisi esplorativa completa
- Identifica e gestisci i valori mancanti
- Crea almeno 5 visualizzazioni significative
- Trai 3 insight interessanti dai dati
Esercizio 2: Previsione delle Vendite
Utilizzando il dataset delle vendite fornito:
- Costruisci un modello di previsione delle vendite mensili
- Valuta le prestazioni del modello
- Interpreta i risultati
- Crea una dashboard interattiva per visualizzare le previsioni
Risorse di Apprendimento
Corsi Online
- Data Science Specialization (Coursera)
- Data Analysis with Python (freeCodeCamp)
- Data Science MicroMasters (edX)
Libri Consigliati
- “Python for Data Analysis” di Wes McKinney
- “The Art of Data Science” di Roger D. Peng e Elizabeth Matsui
- “Storytelling with Data” di Cole Nussbaumer Knaflic
Blog e Community
Conclusione
L’analisi dei dati è un campo in continua evoluzione che combina competenze tecniche, pensiero critico e capacità di comunicazione. Man mano che le aziende generano sempre più dati, la capacità di trasformare queste informazioni in azioni concrete diventa sempre più preziosa. Che tu sia un principiante o un analista esperto, c’è sempre qualcosa di nuovo da imparare in questo campo dinamico e stimolante.
“I dati sono il nuovo petrolio? No. I dati sono il nuovo terreno su cui costruire.” - David McCandless