Exploring a Group of Variables

There are thousands of different variables avaialble via the US Census API. One way to navigate through them is to look through a hierarchy of web pages starting with a year, like 2020, on a page like https://api.census.gov/data/2020.html.

From here we can navigate down to a particular data source, by following the link in the Group List column of the first row, which is for the dataset acs/acs5. This takes us to https://api.census.gov/data/2020/acs/acs5/groups.html.

From there, we can choose the group named B03002, which takes us to https://api.census.gov/data/2020/acs/acs5/groups/B03002.html, where we can see all the variables in the group.

Some of these variables are estimates, and some of them are annotations. Normally, we are interested in the estimates.

Every variable has a label, which is a string of components seperated by !!. For example, B03002_007E has the label, “Estimate!!Total:!!Not Hispanic or Latino:!!Native Hawaiian and Other Pacific Islander alone”. The !! seperators imply a tree among the variables, from the root all the way down to leaves. Internal nodes in the tree represent variables that are aggregates of those lower than them in the tree. For example, B03002_002E is the size of the population that is not Hispanic or Latino, regardless of race. It is the sum of B03002_003E, B03002_004E, B03002_005E, B03002_006E, B03002_007E, B03002_008E, and B03002_009E, which count people of different races who are not Hispanic or Latino. All of these are leaves of the tree, except B03002_009E, which is further subdivided into B03002_010E and B03002_011E.

All of this can get really confusing when you look at it in the tabular form on the web page. In order to make it less confusing, the censusdis package includes code to fetch and present the variable hierarchy in a more understandable way. That’s what the remainder of this notebook is about.

Import and Configuration

[1]:
import censusdis.data as ced
import censusdis.geography as cgeo
from censusdis.states import STATE_NJ
[2]:
YEAR = 2020
DATASET = "acs/acs5"
GROUP = "B03002"

Programmatic Access to a Group Variable Tree

We can get the whole collection of variables in tree form and print it. This format makes it easier to see the relationships we saw in the table at https://api.census.gov/data/2020/acs/acs5/groups/B03002.html.

We can see clearly where variables exist at internal nodes of the tree and where they exist at the leaves. Not all internal nodes have variables but all leaves do.

[3]:
tree = ced.variables.group_tree(DATASET, YEAR, GROUP)
print(tree)
+ Estimate
    + Total: (B03002_001E)
        + Not Hispanic or Latino: (B03002_002E)
            + White alone (B03002_003E)
            + Black or African American alone (B03002_004E)
            + American Indian and Alaska Native alone (B03002_005E)
            + Asian alone (B03002_006E)
            + Native Hawaiian and Other Pacific Islander alone (B03002_007E)
            + Some other race alone (B03002_008E)
            + Two or more races: (B03002_009E)
                + Two races including Some other race (B03002_010E)
                + Two races excluding Some other race, and three or more races (B03002_011E)
        + Hispanic or Latino: (B03002_012E)
            + White alone (B03002_013E)
            + Black or African American alone (B03002_014E)
            + American Indian and Alaska Native alone (B03002_015E)
            + Asian alone (B03002_016E)
            + Native Hawaiian and Other Pacific Islander alone (B03002_017E)
            + Some other race alone (B03002_018E)
            + Two or more races: (B03002_019E)
                + Two races including Some other race (B03002_020E)
                + Two races excluding Some other race, and three or more races (B03002_021E)
+ Geography (GEO_ID)
+ Geographic Area Name (NAME)

Accessing a Sub-Tree

Most of the time we are only interested in variables that are estimates, so we can look down in that part of the tree alone.

[4]:
print(tree["Estimate"])
+ Total: (B03002_001E)
    + Not Hispanic or Latino: (B03002_002E)
        + White alone (B03002_003E)
        + Black or African American alone (B03002_004E)
        + American Indian and Alaska Native alone (B03002_005E)
        + Asian alone (B03002_006E)
        + Native Hawaiian and Other Pacific Islander alone (B03002_007E)
        + Some other race alone (B03002_008E)
        + Two or more races: (B03002_009E)
            + Two races including Some other race (B03002_010E)
            + Two races excluding Some other race, and three or more races (B03002_011E)
    + Hispanic or Latino: (B03002_012E)
        + White alone (B03002_013E)
        + Black or African American alone (B03002_014E)
        + American Indian and Alaska Native alone (B03002_015E)
        + Asian alone (B03002_016E)
        + Native Hawaiian and Other Pacific Islander alone (B03002_017E)
        + Some other race alone (B03002_018E)
        + Two or more races: (B03002_019E)
            + Two races including Some other race (B03002_020E)
            + Two races excluding Some other race, and three or more races (B03002_021E)

Leaves

In many cases, we are really just interested in the leaves, because the internal nodes of the tree contain variables that are aggregate sums of the subtrees below them.

[5]:
leaves = ced.variables.group_leaves(DATASET, YEAR, GROUP)
leaves
[5]:
['B03002_003E',
 'B03002_004E',
 'B03002_005E',
 'B03002_006E',
 'B03002_007E',
 'B03002_008E',
 'B03002_010E',
 'B03002_011E',
 'B03002_013E',
 'B03002_014E',
 'B03002_015E',
 'B03002_016E',
 'B03002_017E',
 'B03002_018E',
 'B03002_020E',
 'B03002_021E',
 'GEO_ID',
 'NAME']

Notice that the set of leaves we got does not include those for annotations. If we really want to see those too, we can add an optional argument.

[6]:
all_leaves = ced.variables.group_leaves(DATASET, YEAR, GROUP, skip_annotations=False)
all_leaves
[6]:
['B03002_003E',
 'B03002_004E',
 'B03002_005E',
 'B03002_006E',
 'B03002_007E',
 'B03002_008E',
 'B03002_010E',
 'B03002_011E',
 'B03002_013E',
 'B03002_014E',
 'B03002_015E',
 'B03002_016E',
 'B03002_017E',
 'B03002_018E',
 'B03002_020E',
 'B03002_021E',
 'GEO_ID',
 'NAME']

Programmatic Access to Geographic Hierarchies

It’s great to know the variables that are available, but in order to make full use of the US Census API and the censusdis API around it, we have to know something about the geography hierarchies that are avaialble for each dataset in each year it is available. These are available on web pages like https://api.census.gov/data/2020/acs/acs5/geography.html, which contains a table of the geographies supported by the ACS5 dataset we have been looking at for the year 2020.

But again, we’d prefer to have access to this information in a pythonic way. The most common way to get this is by calling censusdis.geography.geo_path_py_specs as shown below. This gives us the available hierarchies using Python-friendly snake-case names that we can use to download data.

Each item in the dictionary has a key that represents the geography hierarchy and a value that is the list of the components of the hierachy in snake-case as it can be passed as an argument to censusdis.data.download.

[7]:
cgeo.geo_path_snake_specs(DATASET, YEAR)
[7]:
{'010': ['us'],
 '020': ['region'],
 '030': ['division'],
 '040': ['state'],
 '050': ['state', 'county'],
 '060': ['state', 'county', 'county_subdivision'],
 '067': ['state', 'county', 'county_subdivision', 'subminor_civil_division'],
 '070': ['state', 'county', 'county_subdivision', 'place_remainder_or_part'],
 '140': ['state', 'county', 'tract'],
 '150': ['state', 'county', 'tract', 'block_group'],
 '155': ['state', 'place', 'county_or_part'],
 '160': ['state', 'place'],
 '170': ['state', 'consolidated_city'],
 '172': ['state', 'consolidated_city', 'place_or_part'],
 '230': ['state', 'alaska_native_regional_corporation'],
 '250': ['american_indian_area_alaska_native_area_hawaiian_home_land'],
 '251': ['american_indian_area_alaska_native_area_hawaiian_home_land',
  'tribal_subdivision_remainder'],
 '252': ['american_indian_area_alaska_native_area_reservation_or_statistical_entity_only'],
 '254': ['american_indian_area_off_reservation_trust_land_only_hawaiian_home_land'],
 '256': ['american_indian_area_alaska_native_area_hawaiian_home_land',
  'tribal_census_tract'],
 '258': ['american_indian_area_alaska_native_area_hawaiian_home_land',
  'tribal_census_tract',
  'tribal_block_group'],
 '260': ['american_indian_area_alaska_native_area_hawaiian_home_land',
  'state_or_part'],
 '269': ['american_indian_area_alaska_native_area_hawaiian_home_land',
  'state_or_part',
  'place_remainder_or_part'],
 '270': ['american_indian_area_alaska_native_area_hawaiian_home_land',
  'state_or_part',
  'county_or_part'],
 '280': ['state',
  'american_indian_area_alaska_native_area_hawaiian_home_land_or_part'],
 '283': ['state',
  'american_indian_area_alaska_native_area_reservation_or_statistical_entity_only_or_part'],
 '286': ['state',
  'american_indian_area_off_reservation_trust_land_only_hawaiian_home_land_or_part'],
 '290': ['american_indian_area_alaska_native_area_hawaiian_home_land',
  'tribal_subdivision_remainder',
  'state_or_part'],
 '291': ['american_indian_area_reservation_only',
  'tribal_census_tract_or_part'],
 '292': ['american_indian_area_off_reservation_trust_land_only_hawaiian_home_land',
  'tribal_census_tract_or_part'],
 '293': ['american_indian_area_reservation_only',
  'tribal_census_tract_or_part',
  'tribal_block_group_or_part'],
 '294': ['american_indian_area_off_reservation_trust_land_only_hawaiian_home_land',
  'tribal_census_tract_or_part',
  'tribal_block_group_or_part'],
 '310': ['metropolitan_statistical_area_micropolitan_statistical_area'],
 '311': ['metropolitan_statistical_area_micropolitan_statistical_area',
  'state_or_part'],
 '312': ['metropolitan_statistical_area_micropolitan_statistical_area',
  'state_or_part',
  'principal_city_or_part'],
 '313': ['metropolitan_statistical_area_micropolitan_statistical_area',
  'state_or_part',
  'county'],
 '314': ['metropolitan_statistical_area_micropolitan_statistical_area',
  'metropolitan_division'],
 '315': ['metropolitan_statistical_area_micropolitan_statistical_area',
  'metropolitan_division',
  'state_or_part'],
 '316': ['metropolitan_statistical_area_micropolitan_statistical_area',
  'metropolitan_division',
  'state_or_part',
  'county'],
 '320': ['state',
  'metropolitan_statistical_area_micropolitan_statistical_area_or_part'],
 '321': ['state',
  'metropolitan_statistical_area_micropolitan_statistical_area_or_part',
  'principal_city_or_part'],
 '322': ['state',
  'metropolitan_statistical_area_micropolitan_statistical_area_or_part',
  'county'],
 '323': ['state',
  'metropolitan_statistical_area_micropolitan_statistical_area_or_part',
  'metropolitan_division_or_part'],
 '324': ['state',
  'metropolitan_statistical_area_micropolitan_statistical_area_or_part',
  'metropolitan_division_or_part',
  'county'],
 '330': ['combined_statistical_area'],
 '331': ['combined_statistical_area', 'state_or_part'],
 '332': ['combined_statistical_area',
  'metropolitan_statistical_area_micropolitan_statistical_area'],
 '333': ['combined_statistical_area',
  'metropolitan_statistical_area_micropolitan_statistical_area',
  'state_or_part'],
 '335': ['combined_new_england_city_and_town_area'],
 '336': ['combined_new_england_city_and_town_area', 'state_or_part'],
 '337': ['combined_new_england_city_and_town_area',
  'new_england_city_and_town_area'],
 '338': ['combined_new_england_city_and_town_area',
  'new_england_city_and_town_area',
  'state_or_part'],
 '340': ['state', 'combined_statistical_area_or_part'],
 '341': ['state',
  'combined_statistical_area_or_part',
  'metropolitan_statistical_area_micropolitan_statistical_area_or_part'],
 '345': ['state', 'combined_new_england_city_and_town_area_or_part'],
 '346': ['state',
  'combined_new_england_city_and_town_area_or_part',
  'new_england_city_and_town_area_or_part'],
 '350': ['new_england_city_and_town_area'],
 '351': ['new_england_city_and_town_area', 'state_or_part'],
 '352': ['new_england_city_and_town_area', 'state_or_part', 'principal_city'],
 '353': ['new_england_city_and_town_area', 'state_or_part', 'county_or_part'],
 '354': ['new_england_city_and_town_area',
  'state_or_part',
  'county_or_part',
  'county_subdivision'],
 '355': ['new_england_city_and_town_area', 'necta_division'],
 '356': ['new_england_city_and_town_area', 'necta_division', 'state_or_part'],
 '357': ['new_england_city_and_town_area',
  'necta_division',
  'state_or_part',
  'county_or_part'],
 '358': ['new_england_city_and_town_area',
  'necta_division',
  'state_or_part',
  'county_or_part',
  'county_subdivision'],
 '360': ['state', 'new_england_city_and_town_area_or_part'],
 '361': ['state', 'new_england_city_and_town_area_or_part', 'principal_city'],
 '362': ['state', 'new_england_city_and_town_area_or_part', 'county_or_part'],
 '363': ['state',
  'new_england_city_and_town_area_or_part',
  'county_or_part',
  'county_subdivision'],
 '364': ['state',
  'new_england_city_and_town_area_or_part',
  'necta_division_or_part'],
 '365': ['state',
  'new_england_city_and_town_area_or_part',
  'necta_division_or_part',
  'county_or_part'],
 '366': ['state',
  'new_england_city_and_town_area_or_part',
  'necta_division_or_part',
  'county_or_part',
  'county_subdivision'],
 '400': ['urban_area'],
 '410': ['urban_area', 'state'],
 '430': ['urban_area', 'state', 'county'],
 '500': ['state', 'congressional_district'],
 '510': ['state', 'congressional_district', 'county_or_part'],
 '550': ['state',
  'congressional_district',
  'american_indian_area_alaska_native_area_hawaiian_home_land_or_part'],
 '610': ['state', 'state_legislative_district_upper_chamber'],
 '612': ['state',
  'state_legislative_district_upper_chamber',
  'county_or_part'],
 '620': ['state', 'state_legislative_district_lower_chamber'],
 '622': ['state',
  'state_legislative_district_lower_chamber',
  'county_or_part'],
 '795': ['state', 'public_use_microdata_area'],
 '860': ['zip_code_tabulation_area'],
 '950': ['state', 'school_district_elementary'],
 '960': ['state', 'school_district_secondary'],
 '970': ['state', 'school_district_unified']}

Loading Data for Leaves

Once we know the variables we want, for example the leaves of group B03002 that we found above, and we select one of the geogpraphy types and fill in the particular values we want at each level, we can load data for them. In our case, we will use the one with the key '610', which represents the districts of the upper house of the legeslature of a state. The value associated with that key is a list of the keyword arguments we can pass to censusdis.data.download to specifiy what state and what district or disctricts within the state we want data for.

This call will load data for all the variablles at the leaves of the dataset we examined earlier for all state senate districts in NJ by using the keyword arguments state=STATE_NJ and state_legislative_district_upper_chamber="*".

[8]:
ced.download(
    DATASET, YEAR, leaves, state=STATE_NJ, state_legislative_district_upper_chamber="*"
)
[8]:
STATE STATE_LEGISLATIVE_DISTRICT_UPPER_CHAMBER B03002_003E B03002_004E B03002_005E B03002_006E B03002_007E B03002_008E B03002_010E B03002_011E B03002_013E B03002_014E B03002_015E B03002_016E B03002_017E B03002_018E B03002_020E B03002_021E GEO_ID NAME
0 34 001 142196 21618 925 1963 6 371 487 4965 24460 1820 191 107 25 9969 2943 1306 610U600US34001 State Senate District 1 (2018), New Jersey
1 34 002 107867 31770 547 17962 98 650 694 5588 16532 1398 694 128 16 18301 4893 1337 610U600US34002 State Senate District 2 (2018), New Jersey
2 34 003 149678 33696 452 4264 24 237 358 4327 15417 931 179 22 22 6880 3862 590 610U600US34003 State Senate District 3 (2018), New Jersey
3 34 004 148292 39088 216 7032 17 507 411 5723 8885 2564 287 41 0 5886 1202 1466 610U600US34004 State Senate District 4 (2018), New Jersey
4 34 005 114996 42660 206 7225 18 690 142 3783 16543 2455 239 64 24 24589 5088 963 610U600US34005 State Senate District 5 (2018), New Jersey
5 34 006 144747 22647 138 21829 63 1447 570 4509 11936 1762 92 40 71 9901 2583 1188 610U600US34006 State Senate District 6 (2018), New Jersey
6 34 007 134612 47217 52 12108 50 871 561 7288 9159 1511 332 207 4 4596 2102 948 610U600US34007 State Senate District 7 (2018), New Jersey
7 34 008 160610 22823 35 7878 113 388 561 6264 8291 1528 170 49 134 4174 2510 984 610U600US34008 State Senate District 8 (2018), New Jersey
8 34 009 194162 7586 117 5480 46 418 196 4949 11273 928 12 64 0 3328 1989 183 610U600US34009 State Senate District 9 (2018), New Jersey
9 34 010 188982 7378 188 5765 136 986 209 4130 11925 653 114 34 0 4483 2396 689 610U600US34010 State Senate District 10 (2018), New Jersey
10 34 011 139559 29607 133 7849 11 776 599 4654 18109 1774 297 46 15 10266 3385 1317 610U600US34011 State Senate District 11 (2018), New Jersey
11 34 012 161981 14825 172 17919 0 321 543 3885 16380 1193 141 136 0 4129 3543 428 610U600US34012 State Senate District 12 (2018), New Jersey
12 34 013 176797 5123 115 17925 71 433 762 3196 10866 207 154 66 9 2256 1645 505 610U600US34013 State Senate District 13 (2018), New Jersey
13 34 014 129659 18482 222 37101 63 284 591 3335 20948 1050 28 167 7 4978 2207 849 610U600US34014 State Senate District 14 (2018), New Jersey
14 34 015 88586 55027 407 23661 29 161 278 3645 23449 2288 525 35 164 9688 4578 468 610U600US34015 State Senate District 15 (2018), New Jersey
15 34 016 138275 11402 512 48874 29 1049 1224 4449 12458 581 168 51 46 3262 2454 458 610U600US34016 State Senate District 16 (2018), New Jersey
16 34 017 70856 45295 353 52596 24 1699 1144 3791 31629 2269 474 129 6 13613 2775 602 610U600US34017 State Senate District 17 (2018), New Jersey
17 34 018 96906 16389 144 69965 198 1125 1769 4270 13519 716 107 139 9 7926 3235 1546 610U600US34018 State Senate District 18 (2018), New Jersey
18 34 019 82172 21725 234 37332 91 1005 836 2655 52658 3034 493 348 42 15201 7470 2693 610U600US34019 State Senate District 19 (2018), New Jersey
19 34 020 43416 64102 124 9020 32 6246 1034 2581 39353 3078 894 278 0 50647 8436 1632 610U600US34020 State Senate District 20 (2018), New Jersey
20 34 021 157029 7157 130 23822 4 2092 178 4102 13664 764 27 252 9 6667 3113 745 610U600US34021 State Senate District 21 (2018), New Jersey
21 34 022 85166 48110 302 10880 0 1933 526 3266 30431 2802 751 82 53 27643 6986 1867 610U600US34022 State Senate District 22 (2018), New Jersey
22 34 023 158090 8589 137 17450 67 547 823 2975 14501 537 76 227 10 5269 3280 900 610U600US34023 State Senate District 23 (2018), New Jersey
23 34 024 172261 5102 54 5774 0 366 550 3145 13744 509 33 38 18 2185 2191 778 610U600US34024 State Senate District 24 (2018), New Jersey
24 34 025 149612 8463 95 12998 0 520 435 4235 23251 561 398 33 43 8778 3354 1009 610U600US34025 State Senate District 25 (2018), New Jersey
25 34 026 158999 3980 312 29933 68 560 710 3779 15035 276 187 124 0 2051 1752 515 610U600US34026 State Senate District 26 (2018), New Jersey
26 34 027 135411 27575 149 27637 47 1903 600 5410 13974 1106 117 71 10 4368 3807 949 610U600US34027 State Senate District 27 (2018), New Jersey
27 34 028 48262 124943 418 9828 0 1361 1550 3354 19526 2941 144 143 6 11208 3433 2255 610U600US34028 State Senate District 28 (2018), New Jersey
28 34 029 39357 69740 518 6621 133 3461 775 2477 51169 4322 444 140 78 35428 11447 2838 610U600US34029 State Senate District 29 (2018), New Jersey
29 34 030 198248 5260 79 4598 0 361 560 1229 13560 498 163 19 0 7169 2567 499 610U600US34030 State Senate District 30 (2018), New Jersey
30 34 031 61153 54849 533 48350 68 1749 1560 4958 26783 4000 426 575 0 23355 6615 2378 610U600US34031 State Senate District 31 (2018), New Jersey
31 34 032 61149 6135 235 25696 0 1031 920 2492 73439 2620 1182 731 38 42161 14261 3065 610U600US34032 State Senate District 32 (2018), New Jersey
32 34 033 79083 10164 264 36231 280 994 886 4272 53524 4358 744 366 13 21507 10898 2940 610U600US34033 State Senate District 33 (2018), New Jersey
33 34 034 62307 86049 245 11297 22 1408 1534 3534 23737 2531 244 73 86 20076 4877 1035 610U600US34034 State Senate District 34 (2018), New Jersey
34 34 035 48580 41180 60 9525 8 994 418 2014 45974 2416 256 116 35 54886 10741 2598 610U600US34035 State Senate District 35 (2018), New Jersey
35 34 036 96442 8583 293 24153 90 779 591 2463 59863 1956 538 391 6 15771 14727 1889 610U600US34036 State Senate District 36 (2018), New Jersey
36 34 037 83635 28162 285 55617 44 949 1060 3964 32260 2368 289 169 23 8331 4299 3252 610U600US34037 State Senate District 37 (2018), New Jersey
37 34 038 125937 9772 342 33934 43 578 467 3175 29169 1151 261 254 12 5890 5918 1866 610U600US34038 State Senate District 38 (2018), New Jersey
38 34 039 159377 4062 328 26230 0 550 971 3655 17047 730 100 278 0 2499 2966 954 610U600US34039 State Senate District 39 (2018), New Jersey
39 34 040 164360 4799 219 17246 129 508 428 3114 16899 361 27 72 0 3039 3884 604 610U600US34040 State Senate District 40 (2018), New Jersey

Error Handling

What happens if we get one of the keywords wrong? We can always look a few cells up at the output from cgeo.geo_path_snake_specs, but we also get a friendly exception message to tell us what the options are.

[9]:
try:
    ced.download(DATASET, YEAR, leaves, state=STATE_NJ, unknown_geo="*")
except ced.CensusApiException as e:
    print(e)
Unable to match the geography specification {'state': '34', 'unknown_geo': '*'}.
Supported geographies for dataset='acs/acs5' in year=2020 are:
['us']
['region']
['division']
['state']
['state', 'county']
['state', 'county', 'county_subdivision']
['state', 'county', 'county_subdivision', 'subminor_civil_division']
['state', 'county', 'county_subdivision', 'place_remainder_or_part']
['state', 'county', 'tract']
['state', 'county', 'tract', 'block_group']
['state', 'place', 'county_or_part']
['state', 'place']
['state', 'consolidated_city']
['state', 'consolidated_city', 'place_or_part']
['state', 'alaska_native_regional_corporation']
['american_indian_area_alaska_native_area_hawaiian_home_land']
['american_indian_area_alaska_native_area_hawaiian_home_land', 'tribal_subdivision_remainder']
['american_indian_area_alaska_native_area_reservation_or_statistical_entity_only']
['american_indian_area_off_reservation_trust_land_only_hawaiian_home_land']
['american_indian_area_alaska_native_area_hawaiian_home_land', 'tribal_census_tract']
['american_indian_area_alaska_native_area_hawaiian_home_land', 'tribal_census_tract', 'tribal_block_group']
['american_indian_area_alaska_native_area_hawaiian_home_land', 'state_or_part']
['american_indian_area_alaska_native_area_hawaiian_home_land', 'state_or_part', 'place_remainder_or_part']
['american_indian_area_alaska_native_area_hawaiian_home_land', 'state_or_part', 'county_or_part']
['state', 'american_indian_area_alaska_native_area_hawaiian_home_land_or_part']
['state', 'american_indian_area_alaska_native_area_reservation_or_statistical_entity_only_or_part']
['state', 'american_indian_area_off_reservation_trust_land_only_hawaiian_home_land_or_part']
['american_indian_area_alaska_native_area_hawaiian_home_land', 'tribal_subdivision_remainder', 'state_or_part']
['american_indian_area_reservation_only', 'tribal_census_tract_or_part']
['american_indian_area_off_reservation_trust_land_only_hawaiian_home_land', 'tribal_census_tract_or_part']
['american_indian_area_reservation_only', 'tribal_census_tract_or_part', 'tribal_block_group_or_part']
['american_indian_area_off_reservation_trust_land_only_hawaiian_home_land', 'tribal_census_tract_or_part', 'tribal_block_group_or_part']
['metropolitan_statistical_area_micropolitan_statistical_area']
['metropolitan_statistical_area_micropolitan_statistical_area', 'state_or_part']
['metropolitan_statistical_area_micropolitan_statistical_area', 'state_or_part', 'principal_city_or_part']
['metropolitan_statistical_area_micropolitan_statistical_area', 'state_or_part', 'county']
['metropolitan_statistical_area_micropolitan_statistical_area', 'metropolitan_division']
['metropolitan_statistical_area_micropolitan_statistical_area', 'metropolitan_division', 'state_or_part']
['metropolitan_statistical_area_micropolitan_statistical_area', 'metropolitan_division', 'state_or_part', 'county']
['state', 'metropolitan_statistical_area_micropolitan_statistical_area_or_part']
['state', 'metropolitan_statistical_area_micropolitan_statistical_area_or_part', 'principal_city_or_part']
['state', 'metropolitan_statistical_area_micropolitan_statistical_area_or_part', 'county']
['state', 'metropolitan_statistical_area_micropolitan_statistical_area_or_part', 'metropolitan_division_or_part']
['state', 'metropolitan_statistical_area_micropolitan_statistical_area_or_part', 'metropolitan_division_or_part', 'county']
['combined_statistical_area']
['combined_statistical_area', 'state_or_part']
['combined_statistical_area', 'metropolitan_statistical_area_micropolitan_statistical_area']
['combined_statistical_area', 'metropolitan_statistical_area_micropolitan_statistical_area', 'state_or_part']
['combined_new_england_city_and_town_area']
['combined_new_england_city_and_town_area', 'state_or_part']
['combined_new_england_city_and_town_area', 'new_england_city_and_town_area']
['combined_new_england_city_and_town_area', 'new_england_city_and_town_area', 'state_or_part']
['state', 'combined_statistical_area_or_part']
['state', 'combined_statistical_area_or_part', 'metropolitan_statistical_area_micropolitan_statistical_area_or_part']
['state', 'combined_new_england_city_and_town_area_or_part']
['state', 'combined_new_england_city_and_town_area_or_part', 'new_england_city_and_town_area_or_part']
['new_england_city_and_town_area']
['new_england_city_and_town_area', 'state_or_part']
['new_england_city_and_town_area', 'state_or_part', 'principal_city']
['new_england_city_and_town_area', 'state_or_part', 'county_or_part']
['new_england_city_and_town_area', 'state_or_part', 'county_or_part', 'county_subdivision']
['new_england_city_and_town_area', 'necta_division']
['new_england_city_and_town_area', 'necta_division', 'state_or_part']
['new_england_city_and_town_area', 'necta_division', 'state_or_part', 'county_or_part']
['new_england_city_and_town_area', 'necta_division', 'state_or_part', 'county_or_part', 'county_subdivision']
['state', 'new_england_city_and_town_area_or_part']
['state', 'new_england_city_and_town_area_or_part', 'principal_city']
['state', 'new_england_city_and_town_area_or_part', 'county_or_part']
['state', 'new_england_city_and_town_area_or_part', 'county_or_part', 'county_subdivision']
['state', 'new_england_city_and_town_area_or_part', 'necta_division_or_part']
['state', 'new_england_city_and_town_area_or_part', 'necta_division_or_part', 'county_or_part']
['state', 'new_england_city_and_town_area_or_part', 'necta_division_or_part', 'county_or_part', 'county_subdivision']
['urban_area']
['urban_area', 'state']
['urban_area', 'state', 'county']
['state', 'congressional_district']
['state', 'congressional_district', 'county_or_part']
['state', 'congressional_district', 'american_indian_area_alaska_native_area_hawaiian_home_land_or_part']
['state', 'state_legislative_district_upper_chamber']
['state', 'state_legislative_district_upper_chamber', 'county_or_part']
['state', 'state_legislative_district_lower_chamber']
['state', 'state_legislative_district_lower_chamber', 'county_or_part']
['state', 'public_use_microdata_area']
['zip_code_tabulation_area']
['state', 'school_district_elementary']
['state', 'school_district_secondary']
['state', 'school_district_unified']
[ ]: