Dall'API alla visualizzazione: Group Quarters
In questo esercizio esaminerai dove sono incarcerati i minorenni autori di reato. L'esercizio introduce il concetto di popolazioni in "group quarters", che include dormitori universitari, strutture correttive, case di riposo, basi militari, ecc.
Visualizzerai, per stato, la percentuale di maschi minorenni in strutture correttive per adulti. Le variabili da richiedere sono:
- PCT021005 - Maschi: meno di 18 anni: popolazione istituzionalizzata: strutture correzionali per adulti
- PCT021015 - Maschi: meno di 18 anni: popolazione istituzionalizzata: strutture per minori: strutture correzionali destinate ai minori
requests è stato importato. Il base_url per la richiesta API è stato definito.
pandas e seaborn sono stati importati con i soliti alias.
Questo esercizio fa parte del corso
Analizzare i dati del Censimento USA con Python
Istruzioni dell'esercizio
- Completa la lista
get_varscon le due variabili richieste - Usa
astypeper convertire le colonnein_adultein_juvenilein interi - Calcola la percentuale di minorenni in strutture correzionali per adulti: il numeratore deve essere 100 volte il numero di minorenni nelle strutture
in_adult; il denominatore deve essere la somma dei minorenni nelle strutturein_adultein_juvenile - Ordina
statesperpct_in_adultin ordine decrescente, usandoinplace = True
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
# 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()