PyPUMS
Python interface to the US Census Bureau API — American Community Survey, Decennial Census, PUMS microdata, population estimates, and migration flows.
Quick Start
Get county-level median household income for California:
import pypums
df = pypums.get_acs(
geography="county",
variables=["B19013_001"],
state="CA",
year=2023,
)
df.head()
Make a map with tract-level data:
df = pypums.get_acs(
geography="tract",
variables=["B19013_001"],
state="CA",
county="037",
year=2023,
geometry=True, # returns a GeoDataFrame
)
df.plot(column="estimate", legend=True, figsize=(12, 8))
Work with PUMS microdata:
pums = pypums.get_pums(
variables=["AGEP", "SEX", "WAGP"],
state="CA",
year=2023,
recode=True, # adds human-readable labels
)
pums.head()
Features
get_acs()— American Community Survey data (1-year and 5-year)get_decennial()— Decennial Census data (2000, 2010, 2020)get_pums()— PUMS microdata with replicate weight supportget_estimates()— Population Estimates Program dataget_flows()— ACS migration flows (county and MSA level)load_variables()— Search and browse Census variable codes- MOE functions —
moe_sum(),moe_ratio(),moe_prop(),moe_product(),significance() - Spatial support — Attach TIGER/Line geometries, returns GeoDataFrames
- Survey design —
SurveyDesignclass with successive difference replication - Caching — File-based caching with configurable TTL
- CLI — Command-line access to all data functions
Installation
uv add pypums
For spatial/mapping support:
uv add "pypums[spatial]"
Census API Key
You need a free Census API key. Request one here, then:
export CENSUS_API_KEY="your-key-here"
Or set it in Python:
import pypums
pypums.census_api_key("your-key-here")
Documentation
Full documentation: https://pypums.readthedocs.io
Development
To contribute to this library, first checkout the code. Then install uv and set up the project:
cd pypums
uv sync --extra test
To run the tests:
uv run pytest
To run the linter:
uvx ruff check .
uvx ruff format --check .
Citation
@misc{pypums,
author = {Sergio Sanchez Zavala},
title = {PyPUMS: Python interface to the US Census Bureau API},
year = {2019},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/chekos/pypums}}
}
Release files for pypums 0.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pypums-0.3.1.tar.gz | 54.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pypums-0.3.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 119.7 kB
Release files / pypums-0.3.1.tar.gz
| Download URL | pypums-0.3.1.tar.gz |
|---|---|
| Size | 54.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8b9ae21e8063dab3b7a99f7c5dff0d859690b66350277015a073ae111a54d6c6
|
|
BLAKE2b-256 checksum How to use checksums |
7c94d378be6cd24d145dcdd42efbd4aa1aa493bfde1b3045fb37bfff7be893cd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 13, 2026.
Transparency logRelease files / pypums-0.3.1-py3-none-any.whl
| Download URL | pypums-0.3.1-py3-none-any.whl |
|---|---|
| Size | 65.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
811ddb444d762baea61833ff786c70c182480a5a6fcba66d314a6f378fe1d587
|
|
BLAKE2b-256 checksum How to use checksums |
59ec2bfd94432dad8f2a3fbbb06674483e842974dcaa72adfc9487e52e338589
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 13, 2026.
Transparency log