An interactive Streamlit dashboard to explore how the population of Frankfurt am Main, Germany has evolved over time and across districts, including changes by nationality.
- Built with Python, Plotly, and Streamlit.\
- Data from the City of Frankfurt Open Data Portal and Code for Germany.
- Population over time by district (animated choropleth map)\
- Comparison between two years with growth maps\
- Population shares by nationality (interactive selection)\
- Most representative nationalities by district (animated choropleth map)\
- Download buttons for CSV/GeoJSON per tab\
- Fully interactive via Plotly
frankfurt-population-explorer/
├── data/
│ ├── frankfurt_population_by_district.csv
│ ├── frankfurt_population_by_nationality.csv
│ ├── frankfurt_population_by_nationality_most_representative.csv
│ └── geodata.json
│
├── notebooks/
│ └── frankfurt-population-explorer.ipynb # initial data exploration & analysis
│
├── scripts/
│ ├── data_preparation.py # preprocessing scripts
│ ├── helper_functions.py # utility functions for the app
│ └── frankfurt_population_explorer.py # Streamlit dashboard
│
├── requirements.txt # dependencies
└── README.md
- Population by district: City of Frankfurt – Open Data Portal\
- Population by nationality: City of Frankfurt – Open Data Portal\
- District boundaries: Code for Germany – Click That ’Hood
Thanks to the City of Frankfurt for making demographic statistics openly available and to Code for Germany for providing district GeoJSON files.
Clone the repository and install requirements:
git clone https://github.com/<your-username>/frankfurt-population-explorer.git
cd frankfurt-population-explorer
pip install -r requirements.txtstreamlit run scripts/frankfurt_population_explorer.pyThe app will open in your browser.
The notebooks/frankfurt-population-explorer.ipynb file contains the initial data exploration and plots that inspired the dashboard.
This dashboard was built as part of the Data Science & AI Bootcamp (Batch 32) at Constructor Academy. The bootcamp provided an amazing environment to deepen my skills in Python, data visualization, and interactive app development. Special thanks to the instructors and fellow participants for their support and feedback throughout the project.