Обчислення D за допомогою групування в Pandas
Виконувати обчислення над підмножинами датафрейму настільки поширено, що pandas пропонує альтернативу циклам — метод groupby. У зразку коду groupby спершу використано для групування трактів за штатами, тобто тих рядків, що мають однакове значення в стовпці "state". Метод sum() застосовується для кожної групи до стовпців.
У цій вправі також використано merge — ще один корисний метод pandas — щоб приєднати згруповані суми до окремих трактів. Поки що не переймайтеся синтаксисом. merge буде пояснено в наступному уроці.
pandas імпортовано зі звичним псевдонімом, а датафрейм 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\)) уже обчислено й збережено в датафрейміtractsу стовпцях із суфіксом"_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())