Project Overview
This project examines monthly snowpack depth trends across the European Alps from 1936–2019. Using PostgreSQL, Python, and geospatial filtering within the Alpine Convention perimeter, I analysed how winter snowpack is changing over time across 2,794 stations.
The goal was to compare station-level (micro) trends with aggregated (macro) trends across months, countries, and elevation bands. I applied non-parametric tests (Mann–Kendall and Theil–Sen) to quantify monotonic trends, and then wrapped the results into an interactive Dash app so users can explore patterns, test different groupings, and understand where and when declines are strongest.
Explore the Interactive Dashboard
Use the interactive Dash app below to explore snowpack trends by month, country, and elevation band.
- Filter by country, month, and elevation band.
- Switch between station-level distributions and aggregated summaries.
- Compare how trends differ between core winter months and fringe months.
Note: the dashboard may take ~15 seconds to wake up on first load.
Key Findings & Impact
- Winter snowpack is declining across much of the European Alps, with the strongest, most statistically significant losses at higher elevations and during early winter (November) and early spring (April)
- Italy, Slovenia, and Austria show the clearest and most consistent declines, while France, Switzerland, and Germany display more muted or mixed signals.
- Aggregated series can be misleading. Macro time series tend to overstate declines in core winter months and understate changes in shoulder months when compared to the median station-level trend.
- The analysis reinforces the need to interpret regional averages with caution, especially for decisions in winter tourism, hydropower, and water-resource planning, where local station behaviour can differ from high-level summaries.
Data & Sources
- Primary dataset:
- European Alps Snow Depth Observations – monthly snow depth (hnsum) for Alpine weather stations from 1864–2019, filtered to 1936–2019 to satisfy the ≥30 winters rule.
- Geospatial boundary
- Alpine Convention perimeter (2025 update), used as a mask to define the study region.
- Final analysis sample:
- 2,794 original stations → 795 stations after QA
- 5,309 station-month time series used in the statistical analysis.
The full details of schema design, SQL scripts, and notebook structure are documented in the GitHub repository.
Technical Details
For those interested in implementation details, the GitHub repo includes:
- SQL scripts for data loading, cleaning, and aggregated table creation
- Jupyter notebooks for EDA, statistical testing, and figure generation
- Python modules for custom functions and Dash figure definitions
- PostgreSQL / PostGIS-ready schema plus notes on loading raw CSVs via `COPY`
- Installation and running Local Dashboard application