ComeçarComece de graça

Criar função para calcular D

Calcular o Índice de Dissimilaridade exige várias etapas e tem alto potencial de reuso. Neste exercício, você vai criar a função dissimilarity que usamos no exercício anterior. Os parâmetros de entrada da função serão um DataFrame de geografia de pequenas áreas (como tratos/census tracts) e três nomes de colunas: as duas colunas com as contagens de população do Grupo A e do Grupo B, e a coluna com os nomes ou identificadores geográficos da geografia contêiner (como estados ou áreas metropolitanas).

Como lembrete, a fórmula do Índice de Dissimilaridade é:

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

pandas foi importado com o alias de sempre. O groupby e o merge já estão prontos para você no código abaixo.

Este exercício faz parte do curso

Analisando dados do Censo dos EUA em Python

Ver curso

Instruções do exercício

  • Calcule a expressão dentro das barras de valor absoluto com base na fórmula: os nomes das colunas para \(A\) e \(B\) são formados adicionando o sufixo "_sum" aos parâmetros col_A e col_B
  • O método sum em uma única coluna retorna uma série; use o método to_frame() para converter a série em um DataFrame
  • Teste a nova função em tracts: calcule a dissimilaridade entre brancos e negros por nome de MSA

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

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 e executar o código