CommencezCommencez gratuitement

Calcul de D à l'aide des groupements dans pandas

Effectuer un calcul sur des sous-ensembles d'un DataFrame est si courant que pandas offre une solution autre qu'une boucle : la méthode groupby. Dans le code d'exemple, groupby sert d'abord à regrouper les secteurs par État, c'est‑à‑dire les lignes qui ont 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 pratique de pandas, pour joindre les totaux groupés aux secteurs individuels. Ne vous attardez pas à 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 contenant 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".

Cette activité fait partie du cours

Analyser les données du recensement des États-Unis avec Python

Voir le cours

Instructions de l’exercice

  • 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 enregistrez‑le dans une nouvelle colonne D. (Rappel : La somme des populations blanche et noire (\(A\) et \(B\)) a déjà été calculée et est disponible dans le DataFrame tracts dans les colonnes dont le suffixe est "_sum").
  • Additionnez la colonne D par État à l'aide de la méthode groupby, puis multipliez par 0.5.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# 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