An app for exploring how US demographics have changed since Covid-19.

The Covid Demographics Explorer lets you explore how America has changed since Covid using data from the American Community Survey (ACS). You can view trends for the nation, all 50 states, and all counties and cities with populations of 65,000 or more.

The app has three tabs:

  • Trend — a time series showing how a demographic changed in your selected location from 2005 to 2024
  • Compare Years — an interactive scatterplot showing how all locations changed between any two years, with a sortable table of the underlying data
  • Ranking — a scatterplot and table showing where your selected location stands relative to all others for a given year and demographic

You can explore changes in population, median household income, median rent, public assistance, and remote work. Just start typing any location — the app autocompletes across all geographies.

Try the app here and explore the code here.

Additional Information

I’ve written a series of blog posts documenting how this project evolved. If you’re interested in building something similar, they walk through the key design decisions and technical choices along the way:

  • How Remote Work Has Grown — and Shrunk — Since Covid — a case study using the latest version of the app, showing how remote work more than tripled nationally between 2019 and 2021 and has declined since — but unevenly, with striking local variation. This version also introduced several major changes: coverage expanded beyond counties to include the nation, all states, and cities; a dedicated Compare tab featuring an interactive scatterplot; and a new Ranking tab was added.
  • New Release: Covid Demographics Explorer v2 — covers the addition of a swarm plot for comparing a location to all others, plus significant codebase improvements including CI, migration to uv, and better project structure
  • San Francisco Python Meetup talk (June 2024) — a talk about an earlier version of the project, focused on how it uses Streamlit
  • Creating Time Series Data from the American Community Survey (ACS) — covers two subtle but important pitfalls when treating ACS data as a time series: variables can silently change meaning across years, and geographies can appear and disappear
  • Visualizing the Impact of Covid-19 on US Counties — explains why the 1-year ACS at the county level was chosen for the initial version of the app, and why Census tracts don’t work for this purpose
  • Building a Census Explorer in Python: Part 1 — the origin of the project: why Streamlit was chosen over other frameworks, why censusdis was chosen for Census data access, and how to approach learning Python seriously as an experienced R programmer
Ari Lamstein

Ari Lamstein

I build open source tools for exploring public data — and teach others to do the same. I teach data app development for O’Reilly and have written tutorials for RealPython.