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
Instruções do exercício
- Crie
sums_by_stateusandogroupbye imprima o resultado. - Crie
tractsusandomergee 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 DataFrametractsnas colunas com sufixo"_sum"). - Some a coluna
Dpor estado usando o métodogroupbye multiplique por0.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())