Buat Fungsi untuk Menghitung D
Menghitung Index of Dissimilarity memerlukan beberapa langkah dan memiliki potensi penggunaan ulang yang tinggi. Dalam latihan ini Anda akan membuat fungsi dissimilarity yang kita gunakan pada latihan sebelumnya. Parameter masukan fungsi ini adalah sebuah DataFrame dari geografi area kecil (seperti tract) dan tiga nama kolom: dua kolom dengan jumlah populasi untuk Grup A dan Grup B, serta kolom dengan nama atau pengenal geografis dari geografi penampungnya (seperti negara bagian atau wilayah metro).
Sebagai pengingat, rumus Index of Dissimilarity adalah:
$$D = \frac{1}{2}\sum{\left\lvert \frac{a}{A} - \frac{b}{B} \right\rvert}$$
pandas telah diimpor menggunakan alias yang biasa. groupby dan merge sudah disiapkan untuk Anda pada kode di bawah.
Latihan ini adalah bagian dari kursus
Menganalisis Data Sensus AS dengan Python
Petunjuk latihan
- Hitung ekspresi di dalam tanda nilai mutlak berdasarkan rumus: Nama kolom untuk \(A\) dan \(B\) dibentuk dengan menambahkan sufiks
"_sum"ke parametercol_Adancol_B - Metode
sumpada satu kolom menghasilkan series; gunakan metodeto_frame()untuk mengonversi series menjadi DataFrame - Uji fungsi baru pada
tracts: hitung dissimilarity White-Black berdasarkan nama MSA
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
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())