Từ API đến trực quan hóa: Group Quarters
Trong bài tập này, bạn sẽ tìm hiểu nơi những người vị thành niên phạm tội đang bị giam giữ. Bài tập giới thiệu khái niệm dân số "group quarters" (nơi cư trú tập trung), bao gồm ký túc xá đại học, cơ sở giam giữ, viện dưỡng lão, căn cứ quân sự, v.v.
Bạn sẽ trực quan hóa tỷ lệ phần trăm, theo từng bang, của nam vị thành niên bị giam trong các cơ sở giam giữ dành cho người lớn. Các biến cần yêu cầu là:
- PCT021005 - Nam: Dưới 18 tuổi: Dân số bị giam giữ: Cơ sở giam giữ dành cho người lớn
- PCT021015 - Nam: Dưới 18 tuổi: Dân số bị giam giữ: Cơ sở vị thành niên: Cơ sở giam giữ dành cho vị thành niên
requests đã được import. base_url cho yêu cầu API đã được định nghĩa.
pandas và seaborn đã được import với các bí danh quen thuộc.
Bài tập này là một phần của khóa học
Phân tích dữ liệu Điều tra Dân số Hoa Kỳ bằng Python
Hướng dẫn bài tập
- Hoàn thành danh sách
get_varsvới hai biến cần lấy - Dùng
astypeđể chuyển các cộtin_adultvàin_juvenilesang kiểu số nguyên - Tính tỷ lệ phần trăm vị thành niên trong các cơ sở giam giữ dành cho người lớn: tử số là 100 lần số lượng vị thành niên trong cơ sở
in_adult; mẫu số là tổng số vị thành niên trong các cơ sởin_adultvàin_juvenile - Sắp xếp
statestheopct_in_adulttheo thứ tự giảm dần, dùnginplace = True
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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()