Programmazione Statistica: Python e R
Sintesi Operativa
Competenze fondamentali e strumenti tecnici per l'analisi dei dati con Python e R.
- Python: pandas, numpy, matplotlib, seaborn, scipy.stats, statsmodels
- R: tidyverse (dplyr, ggplot2, tidyr), funzioni statistiche native
- EDA: Workflow metodico di pulizia, ispezione, statistica descrittiva e analisi grafica
- Riproducibilita: Script, seed fisso, ambienti virtuali, Git
- Formati dati: CSV, Excel, JSON, Parquet (Big Data)
1. Introduzione alla Programmazione Statistica
1.1 Confronto Python vs R
| Aspetto | Python | R |
|---|---|---|
| Tipo | General-purpose (versatile) | Specializzato per statistica |
| Analisi dati | pandas, numpy | data.frame, tidyverse |
| Visualizzazione | matplotlib, seaborn | ggplot2 |
| Statistica | scipy.stats, statsmodels | Integrata + pacchetti CRAN |
| Machine Learning | scikit-learn, TensorFlow | caret, mlr3 |
| Ambiente | Jupyter Notebook, VS Code | RStudio |
2. L'Ecosistema Python per l'Analisi Dati
2.1 NumPy e pandas
| Libreria | Funzione | Vantaggio |
|---|---|---|
| NumPy | Calcolo numerico, array N-dimensionali | Operazioni vettorizzate (senza cicli for) |
| pandas | Dati tabulari: Series (colonne) e DataFrame (tabelle) | Manipolazione SQL-like |
Funzioni chiave pandas:
I/O: pd.read_csv(), pd.read_excel(), df.to_csv()
Esplorazione: df.head(), df.describe() (statistiche), df.info() (tipi e NaN)
Manipolazione: df.groupby(), df.merge() (join), df.pivot_table()
2.2 Visualizzazione e Test Statistici
| Libreria | Grafici/Funzioni |
|---|---|
| matplotlib / seaborn | Istogrammi, box plot, scatter plot, heatmap correlazioni |
| scipy.stats | t-test, chi-quadro, Shapiro-Wilk (normalita), ANOVA |
| statsmodels | Regressione OLS: sm.OLS(y, X).fit() |
3. Il Linguaggio R e il Framework tidyverse
R: ambiente open-source per la statistica. Strutture native: vettori, matrici, data.frame, liste e fattori (variabili categoriali).
3.1 Il Sistema tidyverse
| Pacchetto | Funzione | Comandi Chiave |
|---|---|---|
| dplyr | Manipolazione dati | filter(), select(), mutate(), group_by() + summarize() |
| ggplot2 | Visualizzazione (Grammar of Graphics) | Grafici per livelli: geom_point, geom_boxplot, ecc. |
| tidyr | Pulizia e riorganizzazione | pivot_longer(), pivot_wider() |
3.2 Funzioni Statistiche Native in R
t.test(): Test su campioni
lm(y ~ x): Regressione lineare
shapiro.test(): Verifica normalita
Operatore Pipe (%>%): Concatena operazioni in sequenza logica
4. Analisi Esplorativa dei Dati (EDA)
L'EDA e il passo preliminare indispensabile per comprendere pattern e anomalie nei dati.
Workflow Metodologico
- Importazione e Ispezione: Caricamento dati, verifica struttura (shape, head)
- Pulizia: Valori mancanti (NaN) → rimozione (dropna) o imputazione (fillna); gestione duplicati
- Statistica Descrittiva: Media, mediana, deviazione standard, quartili
- Analisi Grafica: Distribuzioni e relazioni tra variabili
- Gestione Outlier: Identificazione tramite box plot o z-score
Attenzione sugli outlier: La decisione di rimuoverli o trasformarli deve essere guidata dalla comprensione della loro origine, non automatica.
5. Automazione, Riproducibilita e Formati Dati
Best Practices per la Riproducibilita
| Pratica | Strumento |
|---|---|
| Scripting | Codice .py o .R (no point-and-click) |
| Seed fisso | np.random.seed() (Python) / set.seed() (R) |
| Ambienti virtuali | venv (Python) / renv (R) |
| Controllo versione | Git |
Formati di File
| Formato | Caratteristica | Uso |
|---|---|---|
| CSV | Testo, piu comune | Scambio dati universale |
| Excel | Fogli multipli, formattazione | Reportistica |
| JSON | Standard web | Dati da API |
| Parquet | Colonnare, compresso | Big Data - superiore a CSV/Excel per grandi volumi |
6. Riepilogo Concetti Chiave per Quiz
| Ambito | Python | R |
|---|---|---|
| Dati Tabulari | pandas (DataFrame) | data.frame / dplyr |
| Calcolo Numerico | numpy (array) | Vettori nativi |
| Grafici | matplotlib / seaborn | ggplot2 |
| Regressione | statsmodels (OLS) | lm(y ~ x) |
| Gestione NaN | dropna(), fillna() | Funzioni di pulizia tidyr |
| Big Data | Formato Parquet | Formato Parquet |