Analisi statistica dei salari nel settore tech italiano, basata sul dataset datapizza-ai-lab/salaries di HuggingFace.
Il notebook esplora il mercato tech italiano rispondendo a quattro domande concrete, usando test statistici appropriati e verificando le assunzioni alla base di ciascuno:
- Quanto conta l'esperienza? - Progressione salariale per seniority e impatto di ogni anno aggiuntivo
- Dove conviene lavorare? - Divario Nord-Sud nel tech, stratificato per esperienza
- Esistono disuguaglianze strutturali? - Gender pay gap, leaky pipeline e analisi a parita di esperienza
- Cosa fa davvero la differenza? - Peso relativo di ogni fattore tramite regressione multipla
L'analisi segue uno schema consolidato per ogni sezione: cosa si analizza, perche, quale test e come funziona, come leggere i risultati, seguito dai dati e dall'interpretazione.
- Esperienza e il fattore dominante: un senior guadagna oltre il 50% in piu di un junior (Cohen's d = 1.01), con un incremento significativo per ogni anno aggiuntivo
- Divario Nord-Sud confermato: gap di ~7k tra Nord e Sud, che si amplifica con la seniority. Il Centro si posiziona a meta strada
- Gender pay gap reale e strutturale: persiste a ogni livello di esperienza, anche controllando per regione e dimensione aziendale. A questo si aggiunge il fenomeno del leaky pipeline (quota femminile in calo ai livelli senior)
- Gerarchia dei fattori (regressione multipla): esperienza > regione > gender > dimensione azienda > work mode. Dimensione aziendale e work mode, spesso sopravvalutati, hanno un impatto modesto
| Test | Scopo |
|---|---|
| ANOVA / Kruskal-Wallis | Confronto tra 3+ gruppi (parametrico / non parametrico) |
| t-test | Confronto tra 2 gruppi |
| Tukey HSD | Post-hoc per identificare quali coppie differiscono |
| Cohen's d | Dimensione dell'effetto (rilevanza pratica) |
| Chi Quadro | Indipendenza tra variabili categoriche |
| Regressione OLS | Effetto netto di ciascun fattore, controllando per gli altri |
| Shapiro-Wilk / Levene | Verifica assunzioni ANOVA (normalita, omoschedasticita) |
italian-tech-salaries-analysis/
├── data_analysis.ipynb # Notebook principale dell'analisi
├── src/
│ ├── config.mplstyle # Stile Matplotlib personalizzato
│ ├── data/
│ │ ├── dataset.py # Caricamento dataset da HuggingFace
│ │ ├── descriptive.py # Statistiche descrittive (describe + skew/kurtosis)
│ │ ├── features.py # Feature engineering
│ │ └── geo_mapper.py # Mappatura province -> regioni -> macro-regioni
│ ├── statistics/
│ │ ├── effect_size.py # Cohen's d
│ │ ├── results.py # Dataclass per risultati (ANOVA, Chi2, TTest, AssumptionResult)
│ │ └── tests.py # t-test, ANOVA, Kruskal-Wallis, Chi2, verifica assunzioni
│ └── visualization/
│ └── plots.py # Barplot, boxplot, heatmap
├── tests/
│ ├── conftest.py # Fixture condivise (DataFrame, gruppi numerici)
│ ├── test_descriptive.py # Test statistiche descrittive
│ ├── test_effect_size.py # Test Cohen's d
│ ├── test_features.py # Test feature engineering
│ ├── test_geo_mapper.py # Test mappatura geografica
│ ├── test_results.py # Test dataclass risultati
│ └── test_tests.py # Test wrapper test statistici
├── pyproject.toml
├── uv.lock
└── LICENSE
| Package | Descrizione | Link |
|---|---|---|
| pandas | Manipolazione e analisi dati tabulari | Docs |
| NumPy | Array numerici e operazioni matematiche | Docs |
| SciPy | Test statistici (t-test, ANOVA, Kruskal-Wallis, Chi Quadro) | Docs |
| statsmodels | Regressione OLS e ANOVA fattoriale | Docs |
| Matplotlib | Grafici e visualizzazione dati | Docs |
| seaborn | Visualizzazione statistica (boxplot, heatmap, histplot) | Docs |
| datasets | Caricamento dataset da HuggingFace Hub | Docs |
Requisiti: Python >= 3.10, uv
git clone https://github.com/skateddu/italian-tech-salaries-analysis.git
cd italian-tech-salaries-analysis
uv syncAprire data_analysis.ipynb in Jupyter o VS Code. Il dataset viene scaricato automaticamente da HuggingFace al primo avvio.
uv run pytest tests/ -v