從 API 到視覺化:Group Quarters
在這個練習中,你要探討少年犯被收容在哪裡。本練習會介紹「group quarters」人口的概念,包含大學宿舍、矯正機構、護理之家、軍事基地等。
你將視覺化各州中,被關在「成人」矯正機構的「未成年」男性所占比例。需要請求的變數如下:
- PCT021005 - 男性:未滿 18 歲:收容於機構的人口:成人矯正機構
- PCT021015 - 男性:未滿 18 歲:收容於機構的人口:少年設施:供少年使用的矯正機構
已匯入 requests。API 請求的 base_url 已經定義。
pandas 和 seaborn 也已用慣用的別名匯入。
本練習屬於課程
使用 Python 分析美國 Census 資料
練習說明
- 用兩個需要的變數完成清單
get_vars - 使用
astype將欄位in_adult和in_juvenile轉換為整數 - 計算未成年人在成人矯正機構中的百分比:分子應為未成年人在
in_adult矯正機構的人數乘以 100;分母應為未成年人在in_adult與in_juvenile矯正機構的人數總和 - 依
pct_in_adult對states進行遞減排序,並使用inplace = True
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# 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()