Phân tách đô thị

Phân tích dữ liệu Điều tra Dân số Hoa Kỳ bằng Python

Lee Hachadoorian

Asst. Professor of Instruction, Temple University

Bản đồ Hoa Kỳ hiển thị ranh giới các khu vực thống kê đô thị và vi đô thị.

Nguồn: Cục Thống kê Dân số Hoa Kỳ

Phân tích dữ liệu Điều tra Dân số Hoa Kỳ bằng Python

Yêu cầu Census API: Dữ liệu đô thị/vi đô thị

import requests

# Xây dựng URL gốc
HOST = "https://api.census.gov/data"
year = "2012"
dataset = "acs/acs5"
base_url = "/".join([HOST, year, dataset])

# Chỉ định biến cần lấy
# B01001_001E = Tổng dân số (ước tính)
# B03002_003E = Dân số Người da trắng không gốc Tây Ban Nha (ước tính)
# B03002_004E = Dân số Người da đen không gốc Tây Ban Nha (ước tính)
get_vars = ["NAME", "B01001_001E", "B03002_003E", "B03002_004E"]
Phân tích dữ liệu Điều tra Dân số Hoa Kỳ bằng Python

Yêu cầu Census API: Dữ liệu đô thị/vi đô thị

# Chỉ định biến cần lấy
get_vars = ["NAME", "B01001_001E", "B03002_003E", "B03002_004E"]

# Tạo từ điển tham số
predicates = {}
predicates["get"] = ",".join(get_vars)

# Đơn vị địa lý yêu cầu predicates["for"] = \ "metropolitan statistical area/micropolitan statistical area:*"
Phân tích dữ liệu Điều tra Dân số Hoa Kỳ bằng Python

Yêu cầu Census API: Dữ liệu đô thị/vi đô thị

r = requests.get(base_url, params=predicates)

print(r.json()[:5])
[['NAME', 'B01001_001E', 'B03002_003E', 'B03002_004E', 'metropolitan statistical area/micropolitan statistical area'],
 ['Adjuntas, PR Micro Area', '19458', '140', '0', '10260'],
 ['Aguadilla-Isabela-San Sebastián, PR Metro Area', '305538', '5602', '231', '10380'],
 ['Coamo, PR Micro Area', '71596', '228', '53', '17620'],
 ['Fajardo, PR Metro Area', '70633', '543', '195', '21940']]
Phân tích dữ liệu Điều tra Dân số Hoa Kỳ bằng Python

Yêu cầu Census API: Dữ liệu đô thị/vi đô thị

# Tạo tên cột dễ đọc
col_names = ["name", "pop", "white", "black", "msa"]

# Tải phản hồi JSON vào DataFrame
msa = pd.DataFrame(columns=col_names, data=r.json()[1:])

# Ép kiểu các cột đếm sang int
msa[["pop", "white", "black"]] = msa["pop", "white", "black"]].astype(int)
Phân tích dữ liệu Điều tra Dân số Hoa Kỳ bằng Python

Định nghĩa khu vực đô thị

  state county   tract  white  black
0    01    001  020100   1601    217
1    01    001  020200    844   1214
2    01    001  020300   2538    647
3    01    001  020400   4030    191
4    01    001  020500   8438   1418
     msa      msa_name          county_name    state_name state county
0  10100  Aberdeen, SD         Brown County  South Dakota    46    013
1  10100  Aberdeen, SD       Edmunds County  South Dakota    46    045
2  10140  Aberdeen, WA  Grays Harbor County    Washington    53    027
3  10180   Abilene, TX      Callahan County         Texas    48    059
4  10180   Abilene, TX         Jones County         Texas    48    253
Phân tích dữ liệu Điều tra Dân số Hoa Kỳ bằng Python

Phương thức merge của Pandas

import pandas as pd
# Ghép DataFrame theo các cột khớp
tracts_with_msa_id = pd.merge(...)
Phân tích dữ liệu Điều tra Dân số Hoa Kỳ bằng Python

Phương thức merge của Pandas

import pandas as pd
# Ghép DataFrame theo các cột khớp
tracts_with_msa_id = pd.merge(tracts, msa_def, ...)
Phân tích dữ liệu Điều tra Dân số Hoa Kỳ bằng Python

Phương thức merge của Pandas

import pandas as pd
# Ghép DataFrame theo các cột khớp
tracts_with_msa_id = pd.merge(tracts, msa_def, 
    left_on = ["state", "county"], right_on = ["state", "county"])
# Cách khác khi tên cột giống nhau
tracts_with_msa_id = pd.merge(tracts, msa_def, on = ["state", "county"])
Phân tích dữ liệu Điều tra Dân số Hoa Kỳ bằng Python

Phương thức merge của Pandas

# DataFrame với tên bang
st.head()
       state_name
state            
01        Alabama
02         Alaska
04        Arizona
05       Arkansas
06     California
Phân tích dữ liệu Điều tra Dân số Hoa Kỳ bằng Python

Phương thức merge của Pandas

# Ghép tracts và st
tracts_st = pd.merge(tracts, st, left_on = "state", right_index = True)

tracts_st.head()
  state county   tract  white  black state_name
0    01    001  020100   1601    217    Alabama
1    01    001  020200    844   1214    Alabama
2    01    001  020300   2538    647    Alabama
3    01    001  020400   4030    191    Alabama
Phân tích dữ liệu Điều tra Dân số Hoa Kỳ bằng Python

Ayo berlatih!

Phân tích dữ liệu Điều tra Dân số Hoa Kỳ bằng Python

Preparing Video For Download...