ComeçarComece de graça

Calculando D usando agrupamento no pandas

Realizar um cálculo em subconjuntos de um DataFrame é tão comum que o pandas oferece uma alternativa ao uso de loops: o método groupby. No código de exemplo, groupby é usado primeiro para agrupar os tratos por estado, isto é, as linhas que têm o mesmo valor na coluna "state". O método sum() é aplicado por grupo às colunas.

Este exercício também usa merge, outro método útil do pandas, para juntar as somas agrupadas às linhas individuais dos tratos. Não se preocupe com a sintaxe por enquanto. merge será explicado em uma lição posterior.

pandas foi importado com o alias de sempre, e o DataFrame tracts com as colunas de população white e black já foi carregado. As variáveis w e b foram definidas com os nomes das colunas "white" e "black".

Este exercício faz parte do curso

Analisando dados do Censo dos EUA em Python

Ver curso

Instruções do exercício

  • Crie sums_by_state usando groupby e imprima o resultado.
  • Crie tracts usando merge e imprima o resultado.
  • Calcule \(\left\lvert\frac{a_i}{A} - \frac{b_i}{B}\right\rvert\) e armazene em uma nova coluna D. (Lembrete: A soma das populações Branca e Negra (\(A\) e \(B\)) já foi calculada e está disponível no DataFrame tracts nas colunas com sufixo "_sum").
  • Some a coluna D por estado usando o método groupby e multiplique por 0.5.

Exercício interativo prático

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

# Sum Black and White residents grouped by state
sums_by_state = tracts.groupby("state")[[w, b]].sum()
print(sums_by_state.head())

# Merge the sum with the original tract populations
tracts = pd.merge(tracts, sums_by_state, left_on = "state", 
    right_index = True, suffixes = ("", "_sum"))
print(tracts.head())

# Calculate inner expression of Index of Dissimilarity formula
tracts["D"] = abs(tracts[____] / tracts[____ + "_sum"] - ____ / ____)

# Calculate the Index of Dissimilarity
print(0.5 * tracts.____(____)["D"].sum())
Editar e executar o código