Inizia subitoInizia gratis

Calcolare D usando i raggruppamenti in pandas

Eseguire un calcolo su sottoinsiemi di un DataFrame è così comune che pandas ci offre un'alternativa ai cicli: il metodo groupby. Nel codice di esempio, groupby viene usato per raggruppare i tract per stato, cioè le righe che hanno lo stesso valore nella colonna "state". Il metodo sum() viene applicato per gruppo alle colonne.

Questo esercizio usa anche merge, un altro metodo utile di pandas, per unire le somme raggruppate ai singoli tract. Non preoccuparti della sintassi per ora: merge verrà spiegato in una lezione successiva.

pandas è stato importato con il solito alias e il DataFrame tracts, con le colonne di popolazione white e black, è stato caricato. Le variabili w e b sono state definite con i nomi di colonna "white" e "black".

Questo esercizio fa parte del corso

Analizzare i dati del Censimento USA con Python

Visualizza corso

Istruzioni dell'esercizio

  • Crea sums_by_state usando groupby e stampa il risultato.
  • Crea tracts usando merge e stampa il risultato.
  • Calcola \(\left\lvert\frac{a_i}{A} - \frac{b_i}{B}\right\rvert\) e salvalo in una nuova colonna D. (Promemoria: La somma delle popolazioni White e Black (\(A\) e \(B\)) è già stata calcolata ed è disponibile nel DataFrame tracts nelle colonne con suffisso "_sum").
  • Somma la colonna D per stato usando il metodo groupby e moltiplica per 0.5.

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

# 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())
Modifica ed esegui il codice