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

Створіть функцію для обчислення D

Обчислення індексу відмінності складається з кількох кроків і має великий потенціал повторного використання. У цій вправі ви створите функцію dissimilarity, яку ми використовували в попередній вправі. Вхідними параметрами функції буде датафрейм з малими географічними одиницями (наприклад, тракти) і три назви стовпців: два стовпці з чисельністю населення Групи 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 для одного стовпця повертає Series; скористайтеся методом to_frame() щоб перетворити Series на 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())
Редагувати та запускати код