How to get U.S. Census data as CSV — censusapi2csv

This post is part of our data science series.
The U.S. Census and American Community Survey (ACS) are the crown jewels of open data (bother your Representative today to make sure they stay that way), but working with data from the Census API isn't always intuitive. Here's an example response to an API call for ACS per capita income data:
[["B19301_001E","state","county","tract","block group"],
["25611","50","007","000100","1"],
["36965","50","007","000100","2"],
["29063","50","007","000200","1"],
. . .
It's not a CSV, it's not exactly JSON, it's just . . . data. We tend to use CSVs as our basic building blocks, so we built a tool to nudge this response into a pure format. Here's how to use it:
Install
npm install censusapi2csv -g
Usage
Let's grab a few things from the ACS API: total population (B01001
) and per capita income (B19301
), for every block group in Chittenden County, Vermont:
censusapi2csv -l 'block group' -f B01001,B19301 -s 50 -c 007
. . . we can even pipe this into our favorite CSV-parsing tool, xsv:
censusapi2csv -l 'block group' -f B01001,B19301 -s 50 -c 007 | xsv table
. . . and we get a formatted look at the data:
B01001_001E B19301_001E state county tract block group
3057 25611 50 007 000100 1
1200 36965 50 007 000100 2
1641 29063 50 007 000200 1
1882 28104 50 007 000200 2
699 61054 50 007 000200 3
. . .
This is just a tiny step in the process of working with census data - and there are many alternative approaches - but we thought it was worth sharing.