Vytvoření funkce pro výpočet D
Výpočet indexu disimilarity zahrnuje více kroků a má vysoký potenciál pro opakované použití. V tomto cvičení vytvoříš funkci dissimilarity, kterou jsme použili v předchozím cvičení. Vstupními parametry funkce budou DataFrame s geografiemi malých oblastí (například sčítacích obvodů) a tři názvy sloupců: dva sloupce s počty obyvatel skupiny A a skupiny B a sloupec s názvy nebo geografickými identifikátory nadřazené geografie (například států nebo metropolitních oblastí).
Pro připomenutí, vzorec pro index disimilarity je:
$$D = \frac{1}{2}\sum{\left\lvert \frac{a}{A} - \frac{b}{B} \right\rvert}$$
pandas byl importován pod obvyklým aliasem. groupby a merge jsou v níže uvedeném kódu již hotové.
Toto cvičení je součástí kurzu
Analýza dat amerického sčítání lidu v Pythonu
Pokyny k cvičení
- Vypočítej výraz uvnitř znaků absolutní hodnoty podle vzorce: názvy sloupců pro \(A\) a \(B\) vzniknou přidáním přípony
"_sum"k parametrůmcol_Aacol_B - Metoda
sumaplikovaná na jeden sloupec vrací sérii; použij metoduto_frame()pro převod série na DataFrame - Otestuj novou funkci na datech
tracts: vypočítej disimilaritu mezi bílými a černými obyvateli podle názvu MSA
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
def dissimilarity(df, col_A, col_B, group_by):
# Sum Group A and Group B by grouping column
grouped_sums = df.groupby(group_by)[[col_A, col_B]].sum()
tmp = pd.merge(df, grouped_sums, left_on = group_by,
right_index = True, suffixes = ("", "_sum"))
# Calculate inner expression
tmp["D"] = abs(____)
# Calculate Index of Dissimilarity and convert to DataFrame
return 0.5 * tmp.groupby(group_by)["D"].sum().____
msa_D = dissimilarity(msa_tracts, ____, ____, "msa_name")
print(msa_D.head())