MulaiMulai sekarang secara gratis

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

Lihat Kursus

Petunjuk latihan

  • Buat sums_by_state menggunakan groupby dan cetak hasilnya.
  • Buat tracts menggunakan merge dan 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 DataFrame tracts pada kolom dengan akhiran "_sum").
  • Jumlahkan kolom D berdasarkan negara bagian menggunakan metode groupby, lalu kalikan dengan 0.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())
Edit dan Jalankan Kode