トラクトと大都市圏の結合
merge メソッドの使い方に集中できるように、不平等指数(Index of Dissimilarity)を計算する関数は用意してあります。(次の演習でこの関数をご自身で作成します!)
この関数を適用するには、MSA 識別子を tracts DataFrame に追加する必要があります。結合キーとして、両方の DataFrame にある state と county を使います。最後に、seaborn の stripplot メソッドを使って、最も分離が大きい上位 10 の大都市圏を可視化します。
これまでに使用した tracts DataFrame が読み込まれています。MSA ごとの人口データは msa として読み込まれており、先頭数行がコンソールに表示されています。最後に、各 MSA を構成する郡の情報が入った msa_def も読み込まれています。
pandas と seaborn は通常のエイリアスで読み込まれています。
この演習はコースの一部です
Pythonで学ぶ米国センサスデータ分析
演習の手順
msaDataFrame に対してnlargestメソッドを使い、"population"に基づく上位 50 の大都市圏を取得します。tractsとmsa_defの両方には"state"と"county"列があります。これらの列で結合するように、onパラメータを指定してmergeメソッドを使います。msaとmsa_Dを、MSA 識別子でmergeメソッドにより結合します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Find identifiers for 50 largest metros by population
msa50 = list(msa.____["msa"])
# Join MSA identifiers to tracts, restrict to largest 50 metros
msa_tracts = pd.merge(____, ____, on = ____)
msa_tracts = msa_tracts[msa_tracts["msa"].isin(msa50)]
# Calculate D using custom function, merge back into MSA
msa_D = dissimilarity(msa_tracts, "white", "black", "msa")
msa = pd.merge(msa, msa_D, ____, ____)
# Plot ten most segregated metros
sns.stripplot(x = "D", y = "name", data = msa.nlargest(10, "D"))
plt.show()