D'yi Hesaplayan Fonksiyon Oluştur
Farklılık Endeksi'ni (Index of Dissimilarity) hesaplamak birden çok adım gerektirir ve tekrar kullanım potansiyeli yüksektir. Bu egzersizde, önceki egzersizde kullandığımız dissimilarity fonksiyonunu oluşturacaksın. Fonksiyonun giriş parametreleri; küçük alan coğrafyalarını (ör. bölgeler/tracts) içeren bir DataFrame ve üç sütun adı olacak: Grup A ve Grup B’nin nüfus sayılarını içeren iki sütun ile kapsayıcı coğrafyanın (ör. eyaletler veya metropol alanları) adlarını ya da coğrafi tanımlayıcılarını içeren sütun.
Hatırlatma olarak, Farklılık Endeksi formülü şöyledir:
$$D = \frac{1}{2}\sum{\left\lvert \frac{a}{A} - \frac{b}{B} \right\rvert}$$
pandas her zamanki kısaltmayla içe aktarıldı. Aşağıdaki kodda groupby ve merge adımları senin için hazır.
Bu egzersiz, kursun bir parçasıdır
Python ile ABD Nüfus Sayımı Verilerini Analiz Etme
Egzersiz talimatları
- Mutlak değer işaretlerinin içindeki ifadeyi formüle göre hesapla: \(A\) ve \(B\) için sütun adları,
col_Avecol_Bparametrelerine"_sum"soneki eklenerek oluşturulur - Tek bir sütunda
summetodu bir seri döndürür; seriyi DataFrame’e çevirmek içinto_frame()metodunu kullan - Yeni fonksiyonu
tractsüzerinde test et: MSA adına göre Beyaz-Siyah farklılığını (dissimilarity) hesapla
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
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())