Skip to main content

Census data for arbitrary geographies

Project description

This Python library extends the Sunlight Foundation’s Census API Wrapper to allow querying Census tracts, block groups, and blocks by Census place, as well as by arbitrary geographies.

Setup

Get the library and its dependencies using pip:

pip install census_area

Usage

from census_area import Census

c = Census("MY_API_KEY")
old_homes = c.acs5.state_place_tract(('NAME', 'B25034_010E'), 17, 14000)

The call above will return the name of the census tract and the number of homes that were built before 1939 for every tract in the City of Chicago. 17 is the FIPS code for Illinois and 14000 is the FIPS code for Chicago.

By default, this method will return a list of dictionaries, where each dictionary represents the data for one tract.

With the return_geometry argument, you can have the method return a geojson-like dictionary. Each tract is a feature, and the census variables about the tract appear in the feature’s property attributes.

old_homes_geojson = c.acs5.state_place_tract(('NAME', 'B25034_010E'), 17, 14000), return_geometry=True)

There are similar methods for block groups

old_home_block_groups = c.acs5.state_place_blockgroup(('NAME', 'B25034_010E'), 17, 14000))

And blocks. Note that block level geographies are only available for the short-form data from the Decennial Census

owner_occupied = c.sf1.state_place_block(('NAME', 'H016F0002'), 17, 14000)

The tract and blockgroup methods are also available for the Decennial Census.

owner_occupied_blockgroup = c.sf1.state_place_tract(('NAME', 'H016F0002'), 17, 14000)
owner_occupied_tract = c.sf1.state_place_blockgroup(('NAME', 'H016F0002'), 17, 14000)

old_homes = c.sf3.state_place_tract('NAME', 'H034010'), 17, 14000)
old_homes = c.sf3.state_place_blockgroup('NAME', 'H034010'), 17, 14000)

In addition to these convenient methods, there are three lower level ways to get census tracts, blocks, and groups for arbitrary geometries.

import json

with open('my_shape.geojson') as infile:
    my_shape_geojson = json.load(infile)
features = []
old_homes = c.acs5.geo_tract(('NAME', 'B25034_010E'), my_shape_geojson['geometry'])
for tract_geojson, tract_data in old_homes:
     tract_geojson['properties'].update(tract_data)
     features.append(tract)

my_shape_with_new_data_geojson = {'type': "FeatureCollection", 'features': features}

The method takes in the census variables you want and a geojson geometry, and returns a generator of the tract shapes, as geojson features, and the variables for that tract. You have to figure out what to do with it. In the example above, we make a new geojson object.

Similar methods are provided for block groups and blocks, for the ACS 5-year and Decennial Census.

c.acs5.geo_blockgroup(('NAME', 'B25034_010E'), my_shape_geojson['geometry'])

c.sf1.geo_block(('NAME', 'H016F0002'), my_shape_geojson['geometry'])
c.sf1.geo_blockgroup(('NAME', 'H016F0002'), my_shape_geojson['geometry'])
c.sf1.geo_tract(('NAME', 'H016F0002'), my_shape_geojson['geometry'])

c.sf3.state_place_tract('NAME', 'H034010'), my_shape_geojson['geometry'])
c.sf3.state_place_blockgroup('NAME', 'H034010'), my_shape_geojson['geometry'])

Team

  • Jean Cochrane, DataMade

  • Forest Gregg, DataMade

Errors and bugs

If something is not behaving intuitively, it is a bug and should be reported. Report it here by creating an issue: https://github.com/datamade/census_area/issues

Help us fix the problem as quickly as possible by following Mozilla’s guidelines for reporting bugs.

Patches and pull requests

Your patches are welcome. Here’s our suggested workflow:

  • Fork the project.

  • Make your feature addition or bug fix.

  • Send us a pull request with a description of your work. Bonus points for topic branches!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

census_area-0.3.1.tar.gz (10.1 kB view details)

Uploaded Source

Built Distribution

census_area-0.3.1-py2.py3-none-any.whl (9.8 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file census_area-0.3.1.tar.gz.

File metadata

  • Download URL: census_area-0.3.1.tar.gz
  • Upload date:
  • Size: 10.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.29.0 CPython/3.6.3

File hashes

Hashes for census_area-0.3.1.tar.gz
Algorithm Hash digest
SHA256 9d419c1172c2e1b5c5f2a3914b38879e99743e785f927920f1e5b1bfe6803748
MD5 4f30b16d1abd6bc24e940e61aef03390
BLAKE2b-256 b3557a7d8147ebf65d5ffdf3372a63486523547c49dda56fddf70c2276e0c6c4

See more details on using hashes here.

File details

Details for the file census_area-0.3.1-py2.py3-none-any.whl.

File metadata

  • Download URL: census_area-0.3.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 9.8 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.29.0 CPython/3.6.3

File hashes

Hashes for census_area-0.3.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 67784bb480a3045b9a988de2fe5378a593655b236cfc35ef8ce82f874f163358
MD5 a07ba0375c32d0996481c07a1ebbe890
BLAKE2b-256 9b87042ade13fa058f2183fdd94dc3c7e15edd3681a620e02592b454b7728810

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page