Inizia subitoInizia gratis

Crea una funzione per calcolare D

Il calcolo dell'Indice di Dissimilarità richiede più passaggi e ha un alto potenziale di riutilizzo. In questo esercizio creerai la funzione dissimilarity che abbiamo usato nell'esercizio precedente. I parametri di input della funzione saranno un DataFrame di geografie di piccole aree (come i tracts) e tre nomi di colonne: le due colonne con i conteggi di popolazione del Gruppo A e del Gruppo B, e la colonna con i nomi o gli identificatori geografici della geografia contenitore (come stati o aree metropolitane).

Come promemoria, la formula dell'Indice di Dissimilarità è:

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

pandas è stato importato usando il solito alias. Le operazioni groupby e merge sono già predisposte per te nel codice qui sotto.

Questo esercizio fa parte del corso

Analizzare i dati del Censimento USA con Python

Visualizza corso

Istruzioni dell'esercizio

  • Calcola l'espressione all'interno dei valori assoluti in base alla formula: i nomi delle colonne per \(A\) e \(B\) si ottengono aggiungendo il suffisso "_sum" ai parametri col_A e col_B
  • Il metodo sum su una singola colonna restituisce una serie; usa il metodo to_frame() per convertire la serie in un DataFrame
  • Metti alla prova la nuova funzione su tracts: calcola la dissimilarità White-Black per nome MSA

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

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