The American Community Survey (ACS) is the largest household survey in the United States and is widely used to study demographic statistics. When I began using it to analyze demographic changes over time, however, I ran into two problems:
- The Census API only lets you download one year of data at a time.
- Sometimes variables change meaning over time.
I developed a Python module called multiyear that addresses these issues. The module started out for personal use, and in March 2025 I contributed it to the censusdis package. Censusdis is a popular package for working with the Census API, and is downloaded around 5k times a month from PyPI.
You can learn more about the multiyear module here:
- ACS Multiyear Analyses: this notebook demonstrates how to use the latest version of the multiyear module. It is hosted in the censusdis repository.
- censusdis v1.4.0 is now on PyPI: this blog post announced that the multiyear module was merged into the censusdis package. It details changes I made to the module as part of joining the package.
- Using Python to Measure Immigration Trends: this post describes the initial version of the multiyear module. It was created to help me analyze changes in immigration to my hometown over the course of the ACS.
- Creating Time Series Data from the American Community Survey (ACS): this post describes a surprising problem when treating the ACS as a time series: variables sometimes change meaning over time. It also describes my initial solution to the problem.