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
Instructions
- Créez
sums_by_stateavecgroupbyet affichez le résultat. - Créez
tractsavecmergeet 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 DataFrametractsdans les colonnes suffixées par"_sum"). - Faites la somme de la colonne
Dpar État avec la méthodegroupby, puis multipliez par0.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())