合併普查小區與都會區
為了專注在 merge 方法的運作方式,本題已替你提供一個用來計算「差異指數(Index of Dissimilarity)」的函式。(你會在下一題自己實作這個函式!)
要套用這個函式,你需要把 MSA 識別碼加入 tracts DataFrame。你會使用兩個 DataFrame 皆有的 state 與 county 作為連接鍵。最後,會使用 seaborn 的 stripplot 方法繪製出區隔最嚴重的前 10 個都會區。
你先前使用過的 tracts DataFrame 已載入。依 MSA 匯總的人口資料已載入為 msa,其前幾列已在主控台顯示。最後,msa_def 已載入,內含各 MSA 所包含的縣。
pandas 與 seaborn 已以慣用別名載入。
本練習屬於課程
使用 Python 分析美國 Census 資料
練習說明
- 對
msaDataFrame 使用nlargest方法,依"population"取出規模最大的 50 個都會區。 tracts與msa_def都有"state"和"county"欄位。使用merge方法並搭配on參數,依這些欄位進行連接。- 使用
merge方法,依 MSA 識別碼將msa與msa_D連接。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# 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()