通勤模式

使用 Python 分析美國 Census 資料

Lee Hachadoorian

Asst. Professor of Instruction, Temple University

通勤資料表

通勤主題

  • 交通方式(汽車、大眾運輸等)
  • 通勤時間
  • 出門/到達上班時間

通勤地理

  • 住家:人們睡覺的地方
  • 工作地:人們工作的地方;可用來推估縣、市、分區等的就業人口
使用 Python 分析美國 Census 資料

紐約市的擁擠費

  • 正在紐約市討論中(2019 年初)
  • 先前嘗試失敗(2007)
  • 對中低收入家庭的費用疑慮

俯視紐約市街道上汽車與計程車的照片。

1 Photo by Brian Jeffery Beggerly (CC BY 2.0)
使用 Python 分析美國 Census 資料

Table B08519:Means Of Transportation To Work By Workers' Earnings In The Past 12 Months (In 2017 Inflation-Adjusted Dollars) For Workplace Geography

Total
    $1 to $9,999 or loss
    $10,000 to $14,999
    $15,000 to $24,999
    $25,000 to $34,999
    $35,000 to $49,999
    $50,000 to $64,999
    $65,000 to $74,999
    $75,000 or more
Car truck or van - drove alone
    <repeat income categories>
Car truck or van - carpooled
    <repeat income categories>
Public transportation (excluding taxicab)
    <repeat income categories>
etc...
使用 Python 分析美國 Census 資料

API 回應

print(r.json())
[['B08519_011E', 'B08519_012E', 'B08519_013E', 'B08519_014E', 'B08519_015E',
  'B08519_016E', 'B08519_017E', 'B08519_018E', 'B08519_020E', 'B08519_021E', 
  ... 
  'B08519_061E', 'B08519_062E', 'B08519_063E', 'state', 'county'], 
 ['10927', '9172', '19659', '22110', '32287', 
  '32977', '15693', '106972', '3663', '2518', 
  ...
  '7457', '2664', '20684', '36', '061']]
使用 Python 分析美國 Census 資料

重塑資料

# Read data row into list
data_row = r.json()[1][:-2]

# Break data row into list of lists iter_len = 8 data = [data_row[i:i+iter_len] for i in range(0, len(data_row), iter_len)]
print(data)
[['10927', '9172', '19659', '22110', '32287', '32977', '15693', '106972'], 
['3663', '2518', '5484', '5625', '8028', '7990', '3369', '22958'], 
['139358', '97178', '200514', '184510', '255491', '240973', '116673', '700808'], 
['16743', '9117', '15900', '13710', '17442', '20206', '10370', '85879'], ...]
使用 Python 分析美國 Census 資料

建立 DataFrame

# Define row names and column names
modes = ["drove_alone", "carpooled", "public", "walked", "taxi", 
         "worked_at_home"]

incomes = ["0k", "10k", "15k", "25k", "35k", "50k", "65k", "75k"]
# Create DataFrame manhattan = pd.DataFrame(data=data, index=modes, columns=incomes) manhattan = manhattan.astype(int)
使用 Python 分析美國 Census 資料

建立 DataFrame

print(manhattan)
                    0k    10k     15k   ...       50k     65k     75k
drove_alone      10716   8965   19294   ...     31502   15519  104078
carpooled         3740   2451    5852   ...      7994    3438   22625
public          140957  99474  197241   ...    235158  111959  654800
walked           16795   9045   15451   ...     20704   10663   83681
taxi              3201   2209    4515   ...      6551    3029   35572
worked_at_home    6854   3885    5489   ...      7776    2809   19598

[6 rows x 8 columns]
使用 Python 分析美國 Census 資料

繪製熱度圖

# Create heatmap of commuters by mode by income
sns.heatmap(manhattan, annot=manhattan // 1000, fmt="d", cmap="YlGnBu")

熱度圖:列為通勤方式、欄為收入類別,以每格通勤人數著色。大眾運輸那列較深,收入逾 $75,000 的大眾運輸格最深。

使用 Python 分析美國 Census 資料

一起來練習吧!

使用 Python 分析美國 Census 資料

Preparing Video For Download...