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

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

Zobrazit kurz

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ům col_A a col_B
  • Metoda sum aplikovaná na jeden sloupec vrací sérii; použij metodu to_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())
Upravit a spustit kód