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 adalah bagian dari kursus
Menganalisis Data Sensus AS dengan Python
Petunjuk 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 praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# 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())