Вычисление индекса D с помощью группировки в Pandas
Вычисления над подмножествами DataFrame встречаются так часто, что pandas предлагает альтернативу циклам — метод groupby. В примере кода groupby используется для группировки трактов по штату, то есть по строкам с одинаковым значением в столбце "state". Метод sum() применяется по каждой группе к столбцам.
В этом упражнении также используется merge — ещё один полезный метод pandas для объединения сгруппированных сумм с отдельными трактами. Пока не беспокойтесь о синтаксисе: метод merge будет рассмотрен в одном из следующих уроков.
pandas импортирован с обычным псевдонимом, DataFrame tracts с столбцами населения white и black уже загружен. Переменные w и b определены и содержат названия столбцов "white" и "black".
Это упражнение является частью курса
Анализ данных переписи населения США в Python
Инструкции к упражнению
- Создайте
sums_by_stateс помощьюgroupbyи выведите результат. - Создайте
tractsс помощьюmergeи выведите результат. - Вычислите \(\left\lvert\frac{a_i}{A} - \frac{b_i}{B}\right\rvert\) и сохраните результат в новом столбце
D. (Напоминание: суммы численности белого и чёрного населения (\(A\) и \(B\)) уже вычислены и доступны в DataFrametractsв столбцах с суффиксом"_sum"). - Просуммируйте столбец
Dпо штатам с помощью методаgroupbyи умножьте результат на0.5.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# 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())