Beräkna D med gruppering i Pandas
Att utföra beräkningar på delmängder av en DataFrame är så vanligt att pandas erbjuder ett alternativ till loopar: metoden groupby. I exempelkoden används groupby först för att gruppera trakter efter delstat, det vill säga de rader som har samma värde i kolumnen "state". Metoden sum() tillämpas per grupp på kolumnerna.
Den här övningen använder också merge, en annan användbar pandas-metod, för att koppla samman de grupperade summorna med de enskilda trakterna. Oroa dig inte för syntaxen just nu – merge förklaras i en senare lektion.
pandas har importerats med det vanliga aliaset och DataFrame:en tracts med befolkningskolumnerna white och black har laddats in. Variablerna w och b har definierats med kolumnnamnen "white" respektive "black".
Den här övningen är en del av kursen
Analys av amerikansk folkräkningsdata i Python
Övningsinstruktioner
- Skapa
sums_by_statemed hjälp avgroupbyoch skriv ut resultatet. - Skapa
tractsmed hjälp avmergeoch skriv ut resultatet. - Beräkna \(\left\lvert\frac{a_i}{A} - \frac{b_i}{B}\right\rvert\) och lagra resultatet i en ny kolumn
D. (Påminnelse: Summan av den vita och svarta befolkningen (\(A\) och \(B\)) är redan beräknad och finns tillgänglig i DataFrame:entractsi kolumnerna med suffixet"_sum"). - Summera kolumnen
Dper delstat med metodengroupbyoch multiplicera med0.5.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# Sum Black and White residents grouped by state
sums_by_state = tracts.groupby("state")[[w, b]].sum()
print(sums_by_state.head())
# Merge the sum with the original tract populations
tracts = pd.merge(tracts, sums_by_state, left_on = "state",
right_index = True, suffixes = ("", "_sum"))
print(tracts.head())
# Calculate inner expression of Index of Dissimilarity formula
tracts["D"] = abs(tracts[____] / tracts[____ + "_sum"] - ____ / ____)
# Calculate the Index of Dissimilarity
print(0.5 * tracts.____(____)["D"].sum())