การเชื่อมข้อมูล Tracts และ Metropolitan Areas
เพื่อให้โฟกัสที่การทำงานของเมธอด merge โดยเฉพาะ จึงได้เตรียมฟังก์ชันสำหรับคำนวณ Index of Dissimilarity ไว้ให้แล้ว (ในแบบฝึกหัดถัดไปจะได้สร้างฟังก์ชันนี้เอง!)
ในการใช้งานฟังก์ชันนี้ ต้องเพิ่มตัวระบุ MSA เข้าไปใน DataFrame tracts โดยใช้ state และ county ซึ่งมีอยู่ในทั้งสอง DataFrame เป็น join key จากนั้นจะใช้เมธอด stripplot ของ seaborn เพื่อแสดงเมืองที่มีการแบ่งแยกมากที่สุด 10 อันดับแรก
โหลด DataFrame tracts ที่ใช้ก่อนหน้านี้ไว้แล้ว ข้อมูลประชากรแยกตาม MSA โหลดไว้เป็น msa และแสดงข้อมูลบางส่วนไว้ในคอนโซล นอกจากนี้ยังโหลด msa_def ซึ่งมีข้อมูลเคาน์ตีที่ประกอบเป็น MSA แต่ละแห่งไว้ด้วย
โหลด pandas และ seaborn ด้วย alias ตามปกติแล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การวิเคราะห์ข้อมูลสำมะโนประชากรสหรัฐฯ ด้วย Python
คำแนะนำการฝึกหัด
- ใช้เมธอด
nlargestบน DataFramemsaเพื่อดึง 50 เมืองขนาดใหญ่ที่สุดตาม"population" - ทั้ง
tractsและmsa_defมีคอลัมน์"state"และ"county"ใช้เมธอดmergeพร้อมพารามิเตอร์onเพื่อ join บนคอลัมน์เหล่านี้ - ใช้เมธอด
mergeเพื่อ joinmsaและmsa_Dบนตัวระบุ MSA
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# 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()