ПочатиПочніть безкоштовно

Обчислення 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())
Редагувати та запускати код