始める無料で始める

Zip Code Tabulation Areas

マーケティングの現場では、ZIPコードの人口統計を知りたいケースが非常に多いです。Zip Code Tabulation Areas(「ZCTA」)は、Censusブロックをもとに構成された、Census が定義する ZIPコード相当の地域区分です。この演習では、アラバマ州内のすべての ZCTA の総人口をリクエストします。

pandas では、インデックスを使って特定の行を取得できます。GEOID は行識別子として適しています。この演習では、各行の州(state)と ZCTA に基づくマルチレベルインデックスを設定します。

requestspandas パッケージはインポート済みです。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())
コードを編集して実行