우편번호 집계 구역(ZCTA)
마케팅 분야에서는 특정 우편번호의 인구 통계를 알고 싶어 하는 경우가 매우 흔합니다. ZIP Code Tabulation Areas(“ZCTA”)는 인구조사 블록을 기반으로 구성된, ZIP Code에 해당하는 인구조사국 정의 지리 구역입니다. 이 연습 문제에서는 Alabama 주에 있는 모든 ZCTA의 총인구를 요청해 보겠습니다.
pandas에서는 인덱스를 사용해 특정 행을 가져올 수 있습니다. GEOID는 행 식별자로 적합합니다. 이번에는 각 행의 주(state)와 ZCTA를 기반으로 한 다중 인덱스를 설정하겠습니다.
requests와 pandas 패키지는 이미 임포트되어 있습니다. base_url이 정의되어 있고, 요청할 변수 목록이 담긴 predicates 딕셔너리도 준비되어 있습니다.
이 연습은 강의의 일부입니다
Python으로 미국 인구조사 데이터 분석하기
연습 안내
predicates딕셔너리에서"for"키를 설정해 ZCTA를 모두 반환하도록 하세요. 지리 항목은 전체를 풀어 쓴"zip code tabulation area (or part)"로 지정합니다.predicates딕셔너리에서"in"키를 설정해 Alabama 주에 속한 ZCTA만 반환하도록 하세요. 앞서 배운 온라인 자료를 활용해 Alabama의 FIPS 코드를 찾아 사용합니다.- DataFrame 인덱스를
state와zcta열을 이어 붙인 값으로 설정하세요. 새로운 DataFrame을 만들지 않도록inplace = True를 사용합니다.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Build dictionary of predicates and execute the request
predicates = {}
predicates["get"] = ",".join(["NAME", "P001001"])
____
____
r = requests.get(base_url, params=predicates)
# Construct the DataFrame
col_names = ["name", "total_pop", "state", "zcta"]
zctas = pd.DataFrame(columns=col_names, data=r.json()[1:])
zctas["total_pop"] = zctas["total_pop"].astype(int)
# Set multilevel index from GEOIDs and print the head
zctas.set_index([____, ____], inplace = True)
print(zctas.head())