НачатьНачать бесплатно

Создание функции для вычисления D

Вычисление индекса диссимилярности включает несколько шагов и имеет высокий потенциал для повторного использования. В этом упражнении вы создадите функцию dissimilarity, которую мы использовали в предыдущем упражнении. Входными параметрами функции будут DataFrame малых территориальных единиц (например, трактов) и три названия столбцов: два столбца с численностью населения группы A и группы B, а также столбец с названиями или географическими идентификаторами объемлющей географии (например, штатов или метрополитенских ареалов).

Для справки, формула индекса диссимилярности:

$$D = \frac{1}{2}\sum{\left\lvert \frac{a}{A} - \frac{b}{B} \right\rvert}$$

pandas импортирован с обычным псевдонимом. Операции groupby и merge уже выполнены в приведённом ниже коде.

Это упражнение является частью курса

Анализ данных переписи населения США в Python

Посмотреть курс

Инструкции к упражнению

  • Вычислите выражение внутри знаков абсолютного значения согласно формуле: названия столбцов для \(A\) и \(B\) формируются путём добавления суффикса "_sum" к параметрам col_A и col_B
  • Метод sum, применённый к одному столбцу, возвращает серию; используйте метод to_frame(), чтобы преобразовать серию в DataFrame
  • Проверьте новую функцию на данных tracts: вычислите индекс диссимилярности между белым и чёрным населением по названию MSA

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

def dissimilarity(df, col_A, col_B, group_by):

    # Sum Group A and Group B by grouping column
    grouped_sums = df.groupby(group_by)[[col_A, col_B]].sum()
    tmp = pd.merge(df, grouped_sums, left_on = group_by, 
                   right_index = True, suffixes = ("", "_sum"))
    
    # Calculate inner expression
    tmp["D"] = abs(____)
    
    # Calculate Index of Dissimilarity and convert to DataFrame
    return 0.5 * tmp.groupby(group_by)["D"].sum().____
  
msa_D = dissimilarity(msa_tracts, ____, ____, "msa_name")
print(msa_D.head())
Редактировать и запускать код