ループで D を計算する
Georgia の乖離指数(Index of Dissimilarity)0.544 は高いのでしょうか、低いのでしょうか。Chicago のある Illinois(FIPS = 17)と比べてみましょう。
この演習では、ループを使ってすべての州について \(D\) を計算し、Georgia と Illinois を比較します。
乖離指数の式は次のとおりです。
$$D = \frac{1}{2}\sum{\left\lvert \frac{a}{A} - \frac{b}{B} \right\rvert}$$
pandas は通常のエイリアスでインポート済みで、人口列 "white" と "black" を持つ tracts DataFrame が読み込まれています。変数 w と b は、それぞれ列名 "white" と "black" に設定されています。
この演習はコースの一部です
Pythonで学ぶ米国センサスデータ分析
演習の手順
"state"列に対してunique()メソッドを使い、州の FIPS コードのリストを作成します。- for ループを使って、
statesの各要素(各 FIPS コード)をstateという変数に取り出します。 stateの各値でtractsDataFrame をフィルタリングし、tmpに代入します。tmpに式を適用して各州の \(D\) を計算し、結果を辞書state_Dに保存します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Get list of state FIPS Codes
states = list(tracts["state"].____)
state_D = {} # Initialize dictionary as collector
for state in ____:
# Filter by state
tmp = ____
# Add Index of Dissimilarity to Dictionary
state_D[state] = 0.5 * sum(____)
# Print D for Georgia (FIPS = 13) and Illinois (FIPS = 17)
print("Georgia D =", round(state_D["13"], 3))
print("Illinois D =", round(state_D["17"], 3))