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
Pokyny k cvičení
- Vytvoř
sums_by_statepomocígroupbya výsledek vypiš. - Vytvoř
tractspomocímergea 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 DataFrametractsve sloupcích s příponou"_sum"). - Sečti sloupec
Dpodle státu pomocí metodygroupbya výsledek vynásob hodnotou0.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())