D mit Gruppierung in Pandas berechnen
Eine Berechnung über Teilmengen eines DataFrame ist so häufig, dass pandas uns mit der Methode groupby eine Alternative zur Schleife bietet. Im Beispielcode wird groupby zuerst verwendet, um Tracts nach Bundesstaat zu gruppieren, also die Zeilen mit demselben Wert in der Spalte "state". Die Methode sum() wird pro Gruppe auf die Spalten angewendet.
In dieser Übung verwenden wir außerdem merge, eine weitere hilfreiche pandas-Methode, um die gruppierten Summen mit den einzelnen Tracts zu verknüpfen. Mach dir über die Syntax jetzt noch keine Gedanken. merge wird in einer späteren Lektion erklärt.
pandas wurde mit dem üblichen Alias importiert, und das DataFrame tracts mit den Bevölkerungsspalten white und black wurde geladen. Die Variablen w und b wurden mit den Spaltennamen "white" und "black" definiert.
Diese Übung ist Teil des Kurses
Analyse von US-Volkszählungsdaten mit Python
Anleitung zur Übung
- Erstelle
sums_by_statemitgroupbyund gib das Ergebnis aus. - Erstelle
tractsmitmergeund gib das Ergebnis aus. - Berechne \(\left\lvert\frac{a_i}{A} - \frac{b_i}{B}\right\rvert\) und speichere es in einer neuen Spalte
D. (Erinnerung: Die Summe der weißen und schwarzen Bevölkerung (\(A\) und \(B\)) wurde bereits berechnet und ist im DataFrametractsin den Spalten mit dem Suffix"_sum"verfügbar.) - Summiere die Spalte
Dnach Bundesstaat mit der Methodegroupbyund multipliziere mit0.5.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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())