MulaiMulai sekarang secara gratis

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

Lihat Kursus

Petunjuk latihan

  • Hitung ekspresi di dalam tanda nilai mutlak berdasarkan rumus: Nama kolom untuk \(A\) dan \(B\) dibentuk dengan menambahkan sufiks "_sum" ke parameter col_A dan col_B
  • Metode sum pada satu kolom menghasilkan series; gunakan metode to_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())
Edit dan Jalankan Kode