Zacznij terazZacznij za darmo

Tworzenie funkcji obliczającej D

Obliczanie Indeksu Nierówności wymaga wielu kroków i ma duży potencjał wielokrotnego użycia. W tym ćwiczeniu stworzysz funkcję dissimilarity, której użyto w poprzednim ćwiczeniu. Parametrami wejściowymi funkcji będą: DataFrame z danymi dla małych jednostek geograficznych (np. okręgów spisowych) oraz trzy nazwy kolumn: dwie kolumny z liczebnością populacji grupy A i grupy B, a także kolumna z nazwami lub identyfikatorami geograficznymi obszaru nadrzędnego (np. stanów lub obszarów metropolitalnych).

Dla przypomnienia, wzór na Indeks Nierówności to:

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

pandas został zaimportowany z użyciem standardowego aliasu. Operacje groupby i merge są już gotowe w poniższym kodzie.

To ćwiczenie jest częścią kursu

Analiza danych spisowych USA w Pythonie

Zobacz kurs

Instrukcje do ćwiczenia

  • Oblicz wyrażenie wewnątrz znaków wartości bezwzględnej zgodnie ze wzorem: nazwy kolumn dla \(A\) i \(B\) powstają przez dodanie przyrostka "_sum" do parametrów col_A i col_B
  • Metoda sum wywołana na pojedynczej kolumnie zwraca serię; użyj metody to_frame(), aby przekonwertować tę serię na DataFrame
  • Przetestuj nową funkcję na zbiorze tracts: oblicz wskaźnik nierówności między ludnością białą a czarną według nazwy obszaru MSA

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

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())
Edytuj i uruchom kod