ComenzarEmpieza gratis

Crea una función para calcular D

Calcular el Índice de Disimilitud requiere varios pasos y tiene un alto potencial de reutilización. En este ejercicio vas a crear la función dissimilarity que usamos en el ejercicio anterior. Los parámetros de entrada de la función serán un DataFrame con geografías de áreas pequeñas (como tracts) y tres nombres de columna: las dos columnas con los conteos de población del Grupo A y del Grupo B, y la columna con los nombres o identificadores geográficos de la geografía contenedora (como estados o áreas metropolitanas).

Como recordatorio, la fórmula del Índice de Disimilitud es:

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

pandas se ha importado con el alias habitual. El groupby y el merge ya están preparados para ti en el código de abajo.

Este ejercicio forma parte del curso

Análisis de datos del Censo de EE. UU. con Python

Ver curso

Instrucciones del ejercicio

  • Calcula la expresión dentro de las barras de valor absoluto según la fórmula: los nombres de columna para \(A\) y \(B\) se forman añadiendo el sufijo "_sum" a los parámetros col_A y col_B
  • El método sum sobre una única columna devuelve una serie; usa el método to_frame() para convertir la serie en un DataFrame
  • Prueba la nueva función en tracts: calcula la disimilitud White-Black por nombre de MSA

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

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())
Editar y ejecutar código