本文同時發表在SF專欄 SQL-on-Cloud 和HashData官方博客git
紐約出租車和轎車委員會(NYC Taxi and Limousine Commission,簡稱TLC)在其網站上公開了紐約整個城市從2009年1月到2015年12月、共12億條出租車出行記錄(壓縮前數據量大約200GB)。這些數據詳細記錄了每一趟出租車上下客的時間和地理位置(精確到經緯度)、出行距離、出行費用、支付方式以及司機上報的乘客數量。出租車做爲城市發展、社會變遷的見證者,其活動軌跡提供了很好的一扇窗,讓咱們可以一窺背後的紐約故事。github
在闡述分析結果前,咱們首先簡單科普一下紐約出租車的行業背景。很長一段時間裏,做爲城市的標誌之一,黃色出租車(Yellow Taxi)是紐約惟一能夠合法運營的出租車。從2013年夏天開始,爲了更好地服務那些不被黃色出租車待見的區域,TLC給數千輛綠色出租車(Green Taxi)頒發了營業許可。今後,紐約人民出行又多了一個選擇。這也是爲何TLC發佈的數據中,只包含了從2013年8月開始的綠色出租車數據。然而,與黃色出租車能在紐約五大行政區自由載客不一樣,綠色出租車的上客區域是有必定限制的。下圖是TLC公佈的綠色出租車的合法營業區域。ide
綠色出租車能夠在綠色區域自由載客,在灰色區域(肯尼迪國際機場和拉瓜迪亞機場)只能預定載客,在黃色區域是不能上客的。正由於這種營業區域的限制,形成了下面咱們看到的不少有意思現象。網站
首先,咱們看看整體的上下客地點分佈地圖。spa
爲了展示的效果,這兩幅地圖沒有包含Staten Island(斯塔滕島)的數據(主要是斯塔滕島的地理位置跟紐約其它四個行政區偏離得有點遠,若是加進來的話,顯示效果不是太理想)。這兩幅圖分別展示了從2009年到2015年7年間出租車上客地點和下客地點的分佈地圖。黃點表明黃色出租車,綠點表明綠色出租車。亮度越高表明頻率越高,分佈越密集。3d
不管從上客點仍是下客點的分佈地圖看,曼哈頓區都是最密集的區域(中間那灰色的長方塊對應的是紐約中央公園)。除曼哈頓外,另外兩個高度密集的區域都是機場:肯尼迪國際機場和拉瓜迪亞機場。黃點和綠點的分佈狀況也大大體符合黃色出租車和綠色出租車自由載客區域的分佈,特別是上客點的分佈。最後,經過比較上下客點分佈狀況,咱們發現,雖然二者仍是主要集中在曼哈頓島,可是下客點分佈明顯向外延伸了很多。對象
看完空間維度的分佈地圖,咱們再從時間維度看看,從2009年到2015年,特別是2013年夏天引入綠色出租車後,出行活動數量的變化。blog
首先是紐約人口最多的行政區--布魯克林。在引入綠色出租車以前,黃色出租車的上客量從20萬/月增加到2013年的40萬/月,而這一時期正對應紐約人口逐步從曼哈頓遷移到布魯克林。2013年夏天引入綠色出租車後,黃色出租車的上客量急劇下滑,並在半年的時間內被綠色出租車超越。雖然總的出租車上客量繼續保持增加,但到2015年的時候黃色出租車的上客量已經降回2009年的水平。事件
其次是曼哈頓的狀況。雖然從2014年後,黃色出租車的上客量開始有所降低,總的上客量仍是比較平穩。儘管綠色出租車被容許在上城區上客,但整個大區依舊是傳統黃色出租車的天下,綠色出租車只佔到微不足道的很小份額。ip
與布魯克林區綠色出租車強勢崛起鋒芒蓋過黃色出租車和曼哈頓區黃色出租車王者地位不可撼動不一樣,皇后區綠色出租車市場份額雖然在短短一年內上升到40%,但以後就穩定下來,一直都沒能超過黃色出租車,並且後者的上客量一直都比較穩定。結合前面的綠色出租車自由載客區域和上客點地理分佈圖,一個合理的解釋是:除曼哈頓外,紐約另外兩個上客點比較密集的地方是肯尼迪國際機場和拉瓜迪亞機場,這兩個機場剛好都在皇后區。因爲黃色出租車能夠在機場自由載客,而綠色出租車只能在機場預定載客,致使機場巨大的上客量基本都流向了黃色出租車。
分析完行政區後,咱們再關注具體的街區。咱們先看紐約城從2009年到2015年出租車活動增加最快的街區。
與皇后區快速增加的街區比較分散不一樣,布魯克林區增加最快的幾個街區都集中在威廉斯堡的北部。如今讓咱們把目光聚焦在威廉斯堡北部,看看這些年那裏都發生什麼了。
上圖是威廉斯堡北部上客點的動態變化圖。總的趨勢看,2009年到2014年出行活動快速增加,以後就開始穩定下來。具體到地理位置,增加快速的上客點主要集中在威思大街(Wythe Ave)、貝里街(Berry St)、北7街(North 7th St),北11街(North 11th St)和北12街(North 12th St)附近。其中,在威思大街、北11街和北12街附近有Output、Verboten夜店(經過Google地圖咱們可以很容易瞭解這些場所的類型)和威思酒店(Wythe Hotel);在貝里街和北11街附近有The Whiskey Brooklyn(酒吧);在威思大街和北7街附近有Shelter(餐館)、Rosarito Fish Shack(餐館)和D.O.C Wine Bar(餐館)。這些消費場所基本上都是在過去7年間開業的(仍是萬能的Google),並帶動了當地消費活動和出行活動。不過隨着出行活動數據2014年後開始穩定,不清楚這是否是意味着該地區的商業發展到了飽和的階段。
結合美國國家氣象中心提供的紐約中央公園的觀測數據,咱們能夠分析下雨天和下雪天對出行活動影響。
總的來講,下雨天對紐約人民出行沒有明顯的影響;而下雪天有負面影響,雪越大,人們越不肯意出行。
最後咱們看看出行支付方式的變化。TLC提供的數據裏包含兩類有效的支付方式:現金和信用卡。
咱們能夠看到,信用卡支付的比例從2009年的20%多點上升到了2015年的60%,反映出信用卡在平常消費日益廣泛。再根據支付金額細分,雖然總的趨勢仍是信用卡支付愈來愈常見,可是金額較小的時候(小於10美金),人們仍是傾向於現金支付。
因爲時間和篇幅關係,在這篇文章中,咱們只是利用12億條出行記錄作了一些簡單的分析,權當拋磚引玉。感興趣的讀者能夠利用這些數據作更多其餘有意思的分析,如紐約的夜店集中在哪些地方,從曼哈頓中心城區到機場須要多長時間,華爾街的銀行家上下班時間,9.11事件10週年記念儀式的交通狀況,以及《虎膽龍威3》中布魯斯.威利斯和塞繆爾.傑克遜可否在30分鐘內從曼哈頓上西城趕到華爾街地鐵站,等等。
在去年11月份的一篇博客文章中, Todd Schneider利用他的蘋果筆記本基於PostgreSQL+PostGIS+R+Google Map API的技術棧對這些數據進行一系列的分析,並將其分析的代碼(SQL,Shell和R腳本)放到GitHub上面。在其GitHub代碼README.md文件中的一個問題引發了咱們的興趣:爲何不用BigQuery和Redshift?BigQuery和Redshift分別是Google雲平臺和Amazon Web Service上面的數據倉庫服務。
咱們在這篇文章中進行的數據分析也是基於Todd提供的腳本,並加入了2015年下半年的數據(Todd寫文章的時候TLC尚未公開那部分數據)。不過和Todd使用PostgreSQL不一樣,雖然咱們也沒有使用BigQuery和Redshift,可是用了另一個功能相似的雲端數據倉庫 --HashData(關於HashData數據倉庫的詳細介紹能夠參考咱們以前的文章)。因此這篇文章中數據分析使用的技術棧是: HashData+PostGIS+R+Google Map API。藉助HashData強大的並行執行引擎,咱們將Todd用他的蘋果筆記本3天才完成的數據分析任務縮短至不到兩個小時,付出代價是不到20元人民幣的雲服務費用。
爲了方便感興趣的讀者進行更深刻的分析,咱們將加工後的12億條出行記錄數據放到了青雲對象存儲QingStor中。HashData數據倉庫提供了直接從QingStor中加載數據的功能。一旦數據加載到數據倉庫中,讀者就能夠利用上述的技術棧對數據進行分析。
這篇文章所用到的數據加載和分析腳本都已經放到Github上面,歡迎你們下載試用和提供反饋意見。