Kom igångKom igång gratis

Skapa en funktion för att beräkna D

Att beräkna dissimilaritetsindexet kräver flera steg och kan återanvändas i många sammanhang. I den här övningen skapar du funktionen dissimilarity som vi använde i föregående övning. Funktionens indataparametrar är en DataFrame med geografiska delområden (till exempel census tract) och tre kolumnnamn: de två kolumnerna med befolkningsantal för grupp A och grupp B, samt kolumnen med namn eller geografiska identifierare för det omslutande geografiska området (till exempel delstater eller storstadsområden).

Som en påminnelse är formeln för dissimilaritetsindexet:

$$D = \frac{1}{2}\sum{\left\lvert \frac{a}{A} - \frac{b}{B} \right\rvert}$$

pandas har importerats med det vanliga aliaset. groupby och merge är redan färdiga i koden nedan.

Den här övningen är en del av kursen

Analys av amerikansk folkräkningsdata i Python

Visa kurs

Övningsinstruktioner

  • Beräkna uttrycket inuti absolutvärdesstreck utifrån formeln: kolumnnamnen för \(A\) och \(B\) bildas genom att lägga till suffixet "_sum" till parametrarna col_A och col_B
  • Metoden sum på en enskild kolumn returnerar en serie – använd metoden to_frame() för att konvertera serien till en DataFrame
  • Testa den nya funktionen på tracts: beräkna dissimilariteten mellan vita och svarta efter MSA-namn

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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())
Redigera och kör kod