合并普查小区与大都市区
为便于专注于 merge 方法的用法,我们已为您提供了一个计算差异指数(Index of Dissimilarity)的函数。(在下一个练习中,您将亲自编写这个函数!)
要应用该函数,您需要把 MSA 标识符添加到 tracts DataFrame 中。您将使用同时存在于两个 DataFrame 中的 state 和 county 作为连接键。最后,您将使用 seaborn 的 stripplot 方法展示分隔程度最高的 10 个都会区。
您之前使用过的 tracts DataFrame 已加载。按 MSA 汇总的人口数据已加载为 msa,其前几行已在控制台显示。最后,msa_def 已加载,其中包含构成每个 MSA 的各县。
pandas 与 seaborn 已按惯例的别名加载。
本练习是课程的一部分
使用 Python 分析美国人口普查数据
练习说明
- 在
msaDataFrame 上使用nlargest方法,按"population"返回规模最大的 50 个都会区。 tracts与msa_def都有"state"和"county"列。使用带有on参数的merge方法在这两列上连接。- 使用
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()