Začněte nyníZačněte zdarma

Výpočet indexu D pomocí seskupování v pandas

Provádět výpočty nad podmnožinami DataFrame je tak časté, že pandas nabízí alternativu k cyklům – metodu groupby. V ukázkovém kódu se groupby používá nejprve ke seskupení sčítacích obvodů podle státu, tedy řádků se stejnou hodnotou ve sloupci "state". Metoda sum() se pak aplikuje pro každou skupinu na vybrané sloupce.

Toto cvičení také využívá metodu merge, další užitečnou metodu pandas, která slouží ke spojení seskupených součtů s jednotlivými obvody. Syntaxí se zatím netrap – merge bude vysvětlena v pozdější lekci.

pandas byl importován pod obvyklým aliasem a DataFrame tracts se sloupci populace white a black je načtený. Proměnné w a b obsahují názvy sloupců "white" a "black".

Toto cvičení je součástí kurzu

Analýza dat amerického sčítání lidu v Pythonu

Zobrazit kurz

Pokyny k cvičení

  • Vytvoř sums_by_state pomocí groupby a výsledek vypiš.
  • Vytvoř tracts pomocí merge a výsledek vypiš.
  • Vypočítej \(\left\lvert\frac{a_i}{A} - \frac{b_i}{B}\right\rvert\) a ulož výsledek do nového sloupce D. (Připomenutí: Součty bílé a černé populace (\(A\) a \(B\)) už byly vypočítány a jsou dostupné v DataFrame tracts ve sloupcích s příponou "_sum").
  • Sečti sloupec D podle státu pomocí metody groupby a výsledek vynásob hodnotou 0.5.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

# 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())
Upravit a spustit kód