DEV Community

Building a reproducible Tampa Bay rent burden dataset from Census ACS data

County averages hide where renters are actually stretched. I wanted ZIP-level rent burden numbers for the Tampa Bay area that anyone could check and reuse, so I built a table covering 132 ZIP Code Tabulation Areas across Hillsborough, Pinellas, Pasco and Hernando counties. This post walks through how it is put together.

Source data

Everything comes from the U.S. Census Bureau's American Community Survey 2020-2024 five-year estimates. The table pulls, for each ZCTA:

  • Gross rent as a percentage of household income (the shares of renter households paying 30%+ and 50%+ of income on rent)
  • Median gross rent
  • Median household income
  • The household counts behind each share

The five-year estimates are the only ACS product with enough sample size to report at ZCTA level. They describe a survey period, not current rent quotes, and I keep that caveat attached wherever the data is published.

Geography gotcha: ZCTA is not a USPS ZIP

A ZCTA is a Census tabulation geography, not a delivery ZIP. Boundaries will not always match the ZIP on an envelope. If you join this table to other data, join on ZCTA and document the mismatch rather than pretending the two are identical.

Keep the margins of error

Every survey estimate carries a margin of error, and small areas carry larger ones. The table keeps the Census Bureau's published margins next to the estimates instead of dropping them. If a ZCTA's share looks surprising, the margin is the first thing to check.

Reproducibility stack

Two companion tables built the same way cover vacancy composition and owner-occupied home values across the same ZCTAs:

If you use the data, cite the Zenodo DOI so the version is pinned.

Top comments (0)