Kom igångKom igång gratis

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

Visa kurs

Övningsinstruktioner

  • Skapa sums_by_state med hjälp av groupby och skriv ut resultatet.
  • Skapa tracts med hjälp av merge och 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:en tracts i kolumnerna med suffixet "_sum").
  • Summera kolumnen D per delstat med metoden groupby och multiplicera med 0.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())
Redigera och kör kod