Menghitung D dengan Pengelompokan di Pandas
Melakukan perhitungan pada subset DataFrame begitu umum sehingga pandas menyediakan alternatif selain menggunakan loop, yaitu metode groupby. Pada kode contoh, groupby pertama-tama digunakan untuk mengelompokkan tract berdasarkan negara bagian, yaitu baris-baris yang memiliki nilai yang sama pada kolom "state". Metode sum() diterapkan per kelompok pada kolom-kolomnya.
Latihan ini juga menggunakan merge, metode pandas lain yang berguna, untuk menggabungkan jumlah per kelompok dengan tiap tract. Untuk saat ini, jangan khawatir tentang sintaksnya. merge akan dijelaskan pada pelajaran berikutnya.
pandas telah diimpor dengan alias yang lazim, dan DataFrame tracts dengan kolom populasi white dan black telah dimuat. Variabel w dan b telah didefinisikan dengan nama kolom "white" dan "black".
Latihan ini merupakan bagian dari kursus
Menganalisis Data Sensus AS dengan Python
Instruksi latihan
- Buat
sums_by_statemenggunakangroupbydan cetak hasilnya. - Buat
tractsmenggunakanmergedan cetak hasilnya. - Hitung \(\left\lvert\frac{a_i}{A} - \frac{b_i}{B}\right\rvert\) dan simpan ke kolom baru
D. (Pengingat: Jumlah populasi White dan Black (\(A\) dan \(B\)) sudah dihitung dan tersedia di DataFrametractspada kolom dengan akhiran"_sum"). - Jumlahkan kolom
Dberdasarkan negara bagian menggunakan metodegroupby, lalu kalikan dengan0.5.
Latihan interaktif langsung praktik
Cobalah latihan ini dengan melengkapi kode contoh ini.
# 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())