Creează o funcție pentru calculul lui D
Calcularea Indicelui de Disimilaritate implică mai mulți pași și poate fi reutilizată frecvent. În acest exercițiu vei crea funcția dissimilarity pe care am folosit-o în exercițiul anterior. Parametrii de intrare ai funcției vor fi un DataFrame cu arii geografice mici (cum ar fi tract-urile) și trei nume de coloane: cele două coloane cu numărul de persoane din Grupul A și Grupul B, și coloana cu numele sau identificatorii geografici ai ariei-container (cum ar fi statele sau zonele metropolitane).
Ca reminder, formula Indicelui de Disimilaritate este:
$$D = \frac{1}{2}\sum{\left\lvert \frac{a}{A} - \frac{b}{B} \right\rvert}$$
pandas a fost importat cu aliasul obișnuit. Operațiile groupby și merge sunt deja completate în codul de mai jos.
Acest exercițiu face parte din cursul
Analiza datelor recensământului SUA în Python
Instrucțiuni pentru exercițiu
- Calculează expresia din interiorul barelor de valoare absolută pe baza formulei: numele coloanelor pentru \(A\) și \(B\) se formează adăugând sufixul
"_sum"la parametriicol_Așicol_B - Metoda
sumaplicată pe o singură coloană returnează o serie; folosește metodato_frame()pentru a converti seria într-un DataFrame - Testează noua funcție pe
tracts: calculează disimilaritatea Alb-Negru după numele MSA
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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())