API to Visualization: Group Quarters
In this exercise, you will investigate where juvenile offenders are incarcerated. This exercise introduces the concept of "group quarters" populations, which includes college dorms, correctional facilities, nursing homes, military bases, etc.
You will visualize the percentage, by state, of incarcerated minor males in adult correctional facilities. The variables to request are:
- PCT021005 - Male: Under 18 years: Institutionalized population: Correctional facilities for adults
- PCT021015 - Male: Under 18 years: Institutionalized population: Juvenile facilities: Correctional facilities intended for juveniles
requests has been imported. The base_url for the API request has been defined.
pandas and seaborn have been imported using the usual aliases.
This exercise is part of the course
Analyzing US Census Data in Python
Exercise instructions
- Complete the list
get_varswith the two desired variables - Use
astypeto convert the columnsin_adultandin_juvenileto integer - Calculate the percentage of minors in correctional facilities for adults: the numerator should be 100 times the number of minors
in_adultcorrectional facilities; the denominator should be the sum of minorsin_adultandin_juvenilecorrectional facilities - Sort
statesbypct_in_adultin descending order, usinginplace = True
Hands-on interactive exercise
Have a go at this exercise by completing this sample code.
# 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()