Zip Code Tabulation Areas
マーケティングの現場では、ZIPコードの人口統計を知りたいケースが非常に多いです。Zip Code Tabulation Areas(「ZCTA」)は、Censusブロックをもとに構成された、Census が定義する ZIPコード相当の地域区分です。この演習では、アラバマ州内のすべての ZCTA の総人口をリクエストします。
pandas では、インデックスを使って特定の行を取得できます。GEOID は行識別子として適しています。この演習では、各行の州(state)と ZCTA に基づくマルチレベルインデックスを設定します。
requests と pandas パッケージはインポート済みです。base_url は定義されており、リクエストする変数のリストを含む predicates 辞書も用意されています。
この演習はコースの一部です
Pythonで学ぶ米国センサスデータ分析
演習の手順
predicates辞書の"for"キーを、ZCTA を「すべて」返すように設定します。地理名は省略せずに"zip code tabulation area (or part)"と記述してくださいpredicates辞書の"in"キーを、アラバマ州内の ZCTA のみ返すように設定します。アラバマ州の 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())