European Alps Average Monthly Snowpack Depths
A PostgreSQL and Python visualization project analyzing trends in monthly snow depths from 2,794 weather stations across Germany, Italy, France, Austria, Slovenia, and Switzerland. The focus is on average snowpack depth and how trends differ by country, month, and elevation band.
Project Overiew
This project isolates average snowpack depth across weather stations in the European Alps and compares station-level (micro) trends with aggregated (macro) trends.
Run A Local Dashboard Application
Run the Dash app to explore the project summary, figures, and conclusions.
Dashboard Screen Grabs & Visualistion Outputs
-
Dashboard Introdction Screengrab

-
Dashboard Monthly Analysis Screengrab

-
Distribution Of Station Slopes By Month

-
Theil-Sen Slopes of Elevation Band in Heatmap

-
Theil-Sen Slopes of Country Snowpacks

Run Installation & Dash App
git clone https://github.com/Mitch-P-Analyst/Europe_Snowpack_Depths.git
cd Europe_Snowpack_Depths
git lfs install
git lfs pull
pip install -r requirements.txt
python -m app
Key Findings & Conclusion
Summary
Alpine winter snowpack is declining across much of the European Alps, with statistically significant, strongest losses at high elevations in early winter and early spring, led by Italy, Slovenia, Austria and Germany. While aggregated summaries are exaggerated in core months and muted in fringe months compared to station-level medians.
Category |
Summary |
Total Stations |
2,794 |
Stations Used (≥30 years) |
795 |
Monthly Series Analyzed |
5,309 |
Most Affected Region |
Italy, Slovenia, Austria |
Most Affecteds Months |
November, April. |
Strongest Signal |
High elevation stations |
Aggregation Effect |
Overstates trends in core months |
Findings
Station-level Trends:
- Most individual station-month time series show negative Theil–Sen slopes.
- Stronger declines are observed at higher elevations and during early winter and early spring months (Nov & Apr).
Geographical Patterns:
- Southeast Alpine countries (Italy, Slovenia, Austria) display the strongest consistent declines.
- North/west countries (France, Switzerland, Germany) show more muted or mixed signals.
Aggregation Effect:
- Aggregated time series tend to overstate declines in core months and understate changes in fringe months, compared to the median station-level trend.
- This reinforces the need to interpret macro summaries with caution and to distinguish from station-level variability.
Data Reliability:
- Only stations with ≥ 30 years of winter data were retained (reducing the sample from 2,794 to 795), improving statistical confidence but limiting coverage at some elevations.
- Further outlier cleaning was explored but had minimal effect on overall conclusions.
- Pandas
- Plotly
- pymannkendall
- Stats
- Shapely
- GeoJson
Repository Structure
├── app/
│ │ ├── app.py # DASH application
│ │ ├── __main__.py
│ │ ├── assests/ # DASH application styling
│ │ │ ├── style.css
│ │ │ ├── style.css.map
│ │ │ └── style.scss # Master scss styling
├── Data/
│ ├── Artifacts/
│ │ └── alps_mask.gpkg # European Alps Boundary Masks
│ ├── Cleaned/
│ │ ├── Tests/ # Statistical Analysis Data Sheets
│ │ │ └── /
│ │ └── / # Cleaned SQL Data outputs from 01_Data_Cleaning.sql
│ └── Raw/
│ ├── Alpine_Convention_Perimeter_2025/ # Alpine Convention Perimeter data
│ └── European Alps Snow Depth Observations Data/ # Zenodo European Alps Snow Depth Observations
├── Notebooks/ # Notebooks/
│ ├── 02_EDA.ipynb
│ ├── 03_Statistical_Testing.ipynb
│ └── 04_Visualisations.ipynb
├── Outputs/
│ ├── Data_ERD.png # SQL ERD Output
│ ├── weather_stations_in_alps.png # Visualisation of Alpine Convention Perimeter filtering
│ └── yearly_snowpack_reliability.png # Visualisation of time frame filtering
├── Scripts/
│ ├── app.sql
│ ├── 01_Data_Cleaning.sql
│ ├── figures.py # 04_Visualisation & DASH App figure functions
│ └── functions.py # Statistical Testing custom functions
├── .gitattributes
├── gitignore
├── requirements.txt
└── README.md
Data
Source
- Kaggle Dataset 'European Alps Snow Depth Observations'
- Geographical Perimeter GDF European Alps Mask
- Sourced from Alpine Convention region. Updated in 2025.
Content
- Zenodo European Alps Snow Depth Observations (1865–2019), filtered to the Alpine Convention 2025 perimeter.
- Analysis Sample: 795 stations after QA (≥ 30 winters of data), producing 5,309 station-month time series (1936–2019).
Data Manipulation
- Metadata of 2979 Available weather stations
- condensed to 2794 in relevance to avaiable Monthly Snowpack Depths from 12 providers.
- Reduced to 795 stations after QA (≥ 30 winters of data) producing 5,309 station-month time series
- Monthly snow depth (hnsum) per station
- Time range: 1864–2024
- Reduced to 1936 – 2019 to abide by ≥ 30 winters of data threshold.
Data Objectives
- Clean and normalize entities for weather data analysis
- Calculate average winter seasonal snowpack depth for each weather station
- Consolidate monthly snowpack data from 12 providers into one entity
- Analyze statistically significant trends across numerous groupings
- Visualise Theil-Sen slopes for monotonic trends across categories countries, months and elevation bands
- Conclude inference from statistical models for winter snowpack trend.
SQL Database Schema
- weather_stations: European Alps Weather station metadata
([SerialPK] Station_id ,
name,
latitude,
longitude,
elevation (metres),
country,
provider )
- (monthy_snowpack): Average monthly snowpack per weather station
([PK] id,
[FK] Station_id,
year,
month,
hnsum
)
Procedure
01 Data Cleaning
COPY weather_stations
FROM './Data/Raw/European Alps Snow Depth Observations Data/meta_all.csv'
DELIMITER ',' CSV HEADER;
02 Exploratory Data Analysis (EDA)
-
View & Learn Data
-
Clean & Organise Data
- Segregate by 'Winter' months
- Identify Stations in European Alps
- Data Filtering
- Assess Data Validity
- Focus Range
- Filter by Country
- Filter by Elevation Band
03 Statistical Testing
Mann-Kendall Test
- Function & Application
04 Visualisations
- Station Coverage
- Country Trends
- Distribution Of Station Slopes Per Country Month
- Country-Year Mean Snowpack Series
- Month Trends
- Distribution Of Station Slopes Per Month
- Month Mean Snowpack Series
- Country Month Heatmap
- Elevation Band