CommencerCommencer gratuitement

Calcul de D à l’aide du regroupement dans pandas

Effectuer un calcul sur des sous-ensembles d’un DataFrame est si courant que pandas propose une alternative aux boucles : la méthode groupby. Dans l’exemple de code, groupby est d’abord utilisé pour regrouper les secteurs par État, c’est-à-dire les lignes ayant la même valeur dans la colonne "state". La méthode sum() est appliquée par groupe aux colonnes.

Cet exercice utilise aussi merge, une autre méthode utile de pandas, pour joindre les totaux groupés aux secteurs individuels. Ne vous préoccupez pas de la syntaxe pour l’instant. merge sera expliqué dans une leçon ultérieure.

pandas a été importé avec l’alias habituel, et le DataFrame tracts avec les colonnes de population white et black a été chargé. Les variables w et b ont été définies avec les noms de colonnes "white" et "black".

Cet exercice fait partie du cours

Analyzing US Census Data in Python

Afficher le cours

Instructions

  • Créez sums_by_state avec groupby et affichez le résultat.
  • Créez tracts avec merge et affichez le résultat.
  • Calculez \(\left\lvert\frac{a_i}{A} - \frac{b_i}{B}\right\rvert\) et stockez-le dans une nouvelle colonne D. (Rappel : la somme des populations White et Black (\(A\) et \(B\)) a déjà été calculée et est disponible dans le DataFrame tracts dans les colonnes suffixées par "_sum").
  • Faites la somme de la colonne D par État avec la méthode groupby, puis multipliez par 0.5.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# 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())
Modifier et exécuter le code