在我的Side Project中,規模最大的一項是用Python與機器學習模型做股價分析與預測。這個專案在2020年底開始蘊釀,從前期規劃到技術試錯,一路拖拖磨磨,終於在今年六月,也就是COVID-19最嚴重的時候正式上線實戰,並啟動後續的PDCA循環。這個專案讓我在專業能力上有大幅度的成長,把專業能力與投資能力綑綁在一起,是我近期做過最聰明的人生決策之一,因此特別記錄下來與大家分享。

當你使用Visual Studio Code (VS Code)撰寫Python程式時,並使用自己開發的套件時,該套件中的程式碼只會執行一次,後續對同一套件的導入將僅使用已經導入的套件,而不會重新執行其程式碼。這表示,如果你在導入套件後修改了該套件,則在重新加載該套件之前,這些更改將不會生效。

不論你是使用網頁版的Google Trends,或是寫程式呼叫API,只要你使用Google Trends的服務,一次最多只能搜尋五組關鍵字。這是Google設下的限制,沒辦法更動。那為什麼威力加強版可以一次搜尋多組關鍵字?實際上,威力加強版執行的任務是將所有關鍵字分組,分別取得每一次的搜尋熱度後再合併資料,並且匯出成CSV檔。

在做數據分析的時候,天氣資料是經常被拿來使用的資料。氣象局在政府資料開放平台上提供了鄉鎮天氣預報-台灣未來1週天氣預報,並提供了json的API。雖然容易使用,但資料中總共包含15項天氣資訊,在結構上又是一層包一層,必須要有耐心的抽絲剝繭,才能轉成容易使用的表格型式。

不管是什麼樣的程式語言,當匯出檔案的時候,編碼都是一個讓人頭痛的問題。經常發生的情況是,你匯出了一個csv檔,在你的電腦上完全可以正常顯示,但傳給同事後,他卻回覆說打開全部都是亂碼,並表達出一種「你怎麼都沒有好好檢查」的微妙情緒。

證交所在政府開放資料平台上提供了一個資料集個股日成交資訊,這裡面的資料會每日更新,並且只保留最新的資料。如果你想抓歷史股價資料,可以參考另一篇文章〈透過Yahoo Finance API抓取台股歷史資料〉。

許多Python使用者都曾抱怨datetime套件不好用,語法繁瑣而且不直覺,不像R語言中的lubridate這麼簡單好用,ymd()甚至可以直接將數字轉為日期,像是20200101變成2020-01-01。雖然Python中也有改良版的日期套件,像是arrow,但基於一個「除非超級必要,否則不使用額外套件」的原則,我個人還是習慣在datetime的基礎上,寫一些方便使用的function,並累積成自己的toolkit

無論是投資或是資料科學專案,經常需要股市資料作分析,雖然證交所在政府資料開放平台中提供了個股日成交資訊,但這裡的資料只有最新的收盤資料,無法查詢歷史記錄,因為歷史記錄都在證券交易所的網路商店,必須付費購買。或是你也可以寫爬蟲爬取證交所網站,但我認為沒有比較方便。

<p>資料科學家、數據分析師是近幾年新興,而且熱門的職業,而DataCamp是一個專精於資料科學的程式教學網站。在實務上會用到的各種知識與程式技能,從流程面的網路爬蟲、數據清洗、資料視覺化,到技術面的Python、R語言、SQL,在DataCamp上幾乎都可以找到相關教學。</p>

事情是這樣的,這個網站是用WordPress建置,本來放在GoDaddy虛擬主機上,當時的方案簽了三年,在大約一年半的時候,我決定把網站搬到SiteGround上。為了不讓GoDaddy的主機空轉,剛好我也想做些Side Projects,試著在網站上建立數據儀表板,GoDaddy的主機剛好可以拿來跑自動化程式或是儲存資料。