Ghép Tracts và Khu vực Đô thị (MSA)
Để tập trung vào cách hoạt động của phương thức merge, một hàm tính Chỉ số Khác biệt (Index of Dissimilarity) đã được cung cấp sẵn cho bạn. (Bạn sẽ tự viết hàm này ở bài tiếp theo!)
Để áp dụng hàm này, bạn cần thêm mã định danh MSA vào DataFrame tracts. Bạn sẽ dùng state và county, có mặt ở cả hai DataFrame, làm khóa ghép. Cuối cùng, bạn sẽ dùng phương thức stripplot của seaborn để hiển thị 10 khu vực đô thị có mức độ phân tách chủng tộc cao nhất.
DataFrame tracts mà bạn đã dùng trước đó đã được nạp. Dữ liệu dân số theo MSA được nạp dưới tên msa, và vài dòng đầu đã được hiển thị trong console. Cuối cùng, msa_def được nạp với danh sách các county cấu thành mỗi MSA.
pandas và seaborn đã được nạp với các bí danh quen thuộc.
Bài tập này là một phần của khóa học
Phân tích dữ liệu Điều tra Dân số Hoa Kỳ bằng Python
Hướng dẫn bài tập
- Dùng phương thức
nlargesttrên DataFramemsađể trả về 50 khu vực đô thị lớn nhất theo"population". - Cả
tractsvàmsa_defđều có các cột"state"và"county". Dùng phương thứcmergevới tham sốonđể ghép theo các cột này. - Dùng phương thức
mergeđể ghépmsavàmsa_Dtheo mã định danh MSA.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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()