De la API a la visualización: alojamientos colectivos
En este ejercicio, vas a investigar dónde están encarcelados los menores infractores. Este ejercicio introduce el concepto de poblaciones en "alojamientos colectivos" (group quarters), que incluye residencias universitarias, centros penitenciarios, residencias de ancianos, bases militares, etc.
Visualizarás el porcentaje, por estado, de hombres menores encarcelados en centros penitenciarios para adultos. Las variables que debes solicitar son:
- PCT021005 - Hombres: Menores de 18 años: Población institucionalizada: Centros penitenciarios para adultos
- PCT021015 - Hombres: Menores de 18 años: Población institucionalizada: Centros para menores: Centros penitenciarios destinados a menores
requests ya se ha importado. Se ha definido el base_url para la solicitud a la API.
pandas y seaborn se han importado con los alias habituales.
Este ejercicio forma parte del curso
Análisis de datos del Censo de EE. UU. con Python
Instrucciones del ejercicio
- Completa la lista
get_varscon las dos variables deseadas - Usa
astypepara convertir las columnasin_adultein_juvenilea enteros - Calcula el porcentaje de menores en centros penitenciarios para adultos: el numerador debe ser 100 veces el número de menores en centros
in_adult; el denominador debe ser la suma de menores en centrosin_adultein_juvenile - Ordena
statesporpct_in_adulten orden descendente, usandoinplace = True
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# 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()