新竹市登記人口數有 436,490, 而汽機車總登記數有 404,133 輛, 每一人口擁有近一台機動車. 但我想瞭解的並不是人口與車輛數, 而是其變化是不是有有趣的故事? 有趣故事的因與果?
資料
資訊技術
- python - pucurl, pandas
- Data Visualization - matplotlib
** 2003-2014年新竹市汽車登記數 **
從這個每年的統計圖來看, 在 2008 年有明顯的下滑, 估計應是金融海嘯造成的結果, 但在下一年尾隨即回復至原13 萬輛的水準, 所以如果下一次再遇到海嘯不要太氣餒, 一年或兩年後一切都會恢復到應有的水準. 有理財的朋友們也可以參考這個指標. 其實在新竹的汽車市場都蠻有動力, 在 12 年內都屬成長的水準.
** 2003-2014年新竹市機車登記數 **
與汽車相比較來說, 機車的登記數則比較不受景氣波動有明顯下降變化, 2003 ~ 2011都為成長的水準, 尤其在 2009/07 後短時間的成長相當亮眼. 但在 2012 年後, 則持續減少, 自 27 萬下降至 25 萬. 這其中應當有故事, 查閱了相關的新聞及 Google 的幫助下, 查詢到交通部的一個解釋:
民國101年3月起,繼承人未於被繼承人死亡後一年內辦理異動登記者,依法令逕行註銷牌照,致機車登記數 減少;102年8月公路總局寄發10年以上高齡機車車主通知單,於102年10月1日前完成報廢手續即不需補繳過去5年積欠之燃料使用費,致機車登記數明顯下降。
但在2014年仍屬下降趨勢, 這其中的故事是否實為交通部所認定因註銷牌照而導致減少趨勢, 又或可能因註銷或報廢而替換至汽車, 使得汽車成長. 就得待其公佈每年註銷車輛統計來輔助解讀. 這倒是跟我們一般認為台灣為機車大國, 機車市場都為正向成長的印象有所出入.
** Python 技巧 **
- 使用 pandas.read_json 直接讀取, 給了一個 Exception
ValueError: Expected object or value
應當是原始的 json 格式有問題, 於是就利用 pycurl 取得資料後再想辦法轉為 data frame, 但其實後來發現只要透過 pandas.io.json 中的 ** json_normalize ** 可以省去一些功夫, 就別再自己造輪子了
from pandas.io.json import json_normalize
json_cont = get_web_content(src_url)
json_datas = json.loads(json_cont)
df = json_normalize(json_datas)
- 輸出 matplotlib 圖示為中文亂碼, 之前在 linux 的解法, 直接修改 /etc/matplotlibrc, 可參閱 Display Chinese Matplotlib under Ubuntu 該文, 但我這次想在程式直接設定使用字型
import matplotlib
matplotlib.rc('font', **{'family':'Microsoft JhengHei'})
在這裡如果是英文字型就可以大概猜測的到 font-fmaily, 但中文我亂猜都沒得到好的答案, 我們還是看看 matplotlib 裡的 font manager 的使用方法, 可以用以下簡短的程式:
from matplotlib import font_manager
font_manager.FontProperties(fname="C:\\windows\\fonts\\msjh.ttf").get_name()