Tracts en metropoolgebieden samenvoegen
Om je te laten focussen op hoe de merge-methode werkt, is er een functie aangeleverd die de Index of Dissimilarity berekent. (In de volgende oefening maak je deze functie zelf!)
Om deze functie toe te passen, moet je de MSA-identifiers toevoegen aan de DataFrame tracts. Je gebruikt state en county, die in beide DataFrames staan, als joinsleutels. Tot slot gebruik je stripplot van seaborn om de tien meest gesegregeerde metrogebieden te tonen.
De DataFrame tracts die je eerder hebt gebruikt is geladen. Bevolkingsgegevens per MSA zijn geladen als msa, en de eerste paar rijen zijn in de console weergegeven. Ten slotte is msa_def geladen met de counties waaruit elke MSA bestaat.
pandas en seaborn zijn geladen met de gebruikelijke aliassen.
Deze oefening maakt deel uit van de cursus
US Census-gegevens analyseren in Python
Oefeninstructies
- Gebruik de methode
nlargestop de DataFramemsaom de 50 grootste metrogebieden op basis van"population"terug te geven. - Zowel
tractsalsmsa_defhebben de kolommen"state"en"county". Gebruik de methodemergemet de parameteronom op deze kolommen te joinen. - Gebruik de methode
mergeommsaenmsa_Dte joinen op de MSA-identifier.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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()