Dari API ke Visualisasi: Group Quarters
Dalam latihan ini, Anda akan menelusuri lokasi tempat pelaku kejahatan remaja ditahan. Latihan ini memperkenalkan konsep populasi "group quarters", yang mencakup asrama kampus, lembaga pemasyarakatan, panti wreda, pangkalan militer, dan sebagainya.
Anda akan memvisualisasikan persentase, per negara bagian, anak laki-laki yang merupakan minor yang ditahan di fasilitas pemasyarakatan dewasa. Variabel yang perlu diminta adalah:
- PCT021005 - Laki-laki: Di bawah 18 tahun: Populasi yang diinstitusikan: Fasilitas pemasyarakatan untuk dewasa
- PCT021015 - Laki-laki: Di bawah 18 tahun: Populasi yang diinstitusikan: Fasilitas remaja: Fasilitas pemasyarakatan untuk remaja
requests telah diimpor. base_url untuk permintaan API telah ditetapkan.
pandas dan seaborn telah diimpor menggunakan alias yang biasa.
Latihan ini adalah bagian dari kursus
Menganalisis Data Sensus AS dengan Python
Petunjuk latihan
- Lengkapi daftar
get_varsdengan dua variabel yang diinginkan - Gunakan
astypeuntuk mengonversi kolomin_adultdanin_juvenilemenjadi integer - Hitung persentase minor di fasilitas pemasyarakatan untuk dewasa: pembilang harus 100 kali jumlah minor di fasilitas pemasyarakatan
in_adult; penyebut harus jumlah minor di fasilitas pemasyarakatanin_adultdanin_juvenile - Urutkan
statesberdasarkanpct_in_adultsecara menurun, dengan menggunakaninplace = True
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# Specify variables and execute API request
get_vars = ["NAME", ____]
predicates["get"] = ",".join(get_vars)
r = requests.get(base_url, params=predicates)
# Construct DataFrame
col_names = ["name", "in_adult", "in_juvenile", "state"]
states = pd.DataFrame(columns=col_names, data=r.json()[1:])
states[["in_adult", "in_juvenile"]] = states[["in_adult", "in_juvenile"]].____
# Calculate percentage of incarcerated male minors in adult facilities
states["pct_in_adult"] = ____
states.sort_values(by = ____, ascending = ____, inplace = ____)
sns.stripplot(x = "pct_in_adult", y = "name", data = states)
plt.show()