Obliczanie D za pomocą grupowania w Pandas
Wykonywanie obliczeń na podzbiorach DataFrame jest na tyle częstą operacją, że pandas oferuje alternatywę dla pętli – metodę groupby. W przykładowym kodzie groupby służy najpierw do grupowania obszarów spisowych według stanu, czyli wierszy o tej samej wartości w kolumnie "state". Metoda sum() jest stosowana dla każdej grupy do wybranych kolumn.
Ćwiczenie korzysta również z metody merge – kolejnego przydatnego narzędzia pandas – do połączenia zsumowanych wartości grupowych z poszczególnymi obszarami spisowymi. Na razie nie przejmuj się składnią. Metoda merge zostanie omówiona w dalszej części kursu.
Biblioteka pandas została zaimportowana z użyciem standardowego aliasu, a DataFrame tracts z kolumnami populacyjnymi white i black jest już załadowany. Zmienne w i b są zdefiniowane z nazwami kolumn "white" i "black".
To ćwiczenie jest częścią kursu
Analiza danych spisowych USA w Pythonie
Instrukcje do ćwiczenia
- Utwórz
sums_by_stateza pomocągroupbyi wyświetl wynik. - Utwórz
tractsza pomocąmergei wyświetl wynik. - Oblicz \(\left\lvert\frac{a_i}{A} - \frac{b_i}{B}\right\rvert\) i zapisz wynik w nowej kolumnie
D. (Przypomnienie: Suma populacji białej i czarnej (\(A\) i \(B\)) została już obliczona i jest dostępna w DataFrametractsw kolumnach z sufiksem"_sum"). - Zsumuj kolumnę
Dwedług stanu za pomocą metodygroupbyi pomnóż przez0.5.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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())