Source code for parsons.census.census

import logging

from parsons import Table
from parsons.utilities import check_env
from parsons.utilities.api_connector import APIConnector

logger = logging.getLogger(__name__)


[docs] class Census: """Class that creates a connector to the Census Bureau API""" def __init__(self, api_key=None): """ Instantiate Census class. Args: api_key: string, optional key for Census API access can also be pulled from environment variable CENSUS_API_KEY """ self.api_key = check_env.check("CENSUS_API_KEY", api_key) self.host = "https://api.census.gov/data"
[docs] def get_census(self, year=None, dataset_acronym=None, variables=None, location=None): """ Pull census data. For background check out the `Census API Guide <https://www.census.gov/data/developers/guidance/api-user-guide.html>`_ Args: year: 4-digit string or integer e.g. ``'2019' or 2019`` dataset_acronym: string with dataset name e.g. ``/acs/acs1`` variables: comma-separated string with variable names e.g. ``NAME,B01001_001E`` location: string with desired locations e.g. ``'us:*'`` Returns: parsons.Table """ # set up the URL g = "?get=" usr_key = f"&key={self.api_key}" year = str(year) # in case someone passes int location = "&for=" + location query_url = f"{self.host}/{year}{dataset_acronym}{g}{variables}{location}{usr_key}" # create connector connector = APIConnector(uri=self.host) # pull data response = connector.get_request(url=query_url) # turn into Parsons table and return it return Table(response)