ComenzarEmpieza gratis

Calcular D usando agrupaciones en pandas

Realizar un cálculo sobre subconjuntos de un DataFrame es tan común que pandas nos da una alternativa a hacerlo en un bucle: el método groupby. En el código de ejemplo, primero se usa groupby para agrupar secciones censales por estado, es decir, aquellas filas que tienen el mismo valor en la columna "state". El método sum() se aplica por grupo a las columnas.

Este ejercicio también utiliza merge, otro método útil de pandas, para unir las sumas agrupadas con las secciones individuales. No te preocupes por la sintaxis por ahora. merge se explicará en una lección posterior.

Se ha importado pandas con el alias habitual y se ha cargado el DataFrame tracts con las columnas de población white y black. Las variables w y b se han definido con los nombres de columna "white" y "black".

Este ejercicio forma parte del curso

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

Ver curso

Instrucciones del ejercicio

  • Crea sums_by_state usando groupby e imprime el resultado.
  • Crea tracts usando merge e imprime el resultado.
  • Calcula \(\left\lvert\frac{a_i}{A} - \frac{b_i}{B}\right\rvert\) y guárdalo en una nueva columna D. (Recuerda: La suma de las poblaciones White y Black (\(A\) y \(B\)) ya se calculó y está disponible en el DataFrame tracts en las columnas con el sufijo "_sum").
  • Suma la columna D por estado usando el método groupby y multiplica por 0.5.

Ejercicio interactivo práctico

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

# 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 y ejecutar código