好,那我們大致來先介紹一下整個這個資料處理的步驟。
那首先呢就是我們第一件事要做的就是要把這個中文的 heading
把它移除掉,然後呢 讓它只剩下英文的 heading,然後呢把整個這個格式呢 把它轉成標準的 csv
的格式,那這包含把所有的 額外的空白呢全部都把它移掉。
然後呢接下來我們要做的事情就是要把這個資料排序,把它 先依股票的代碼排序,再依照日期排序。
那接下來呢就是要去準備所謂的市場報酬的資料,
我們要先把市場的報酬資料也把它弄好,把它轉成 csv 的格式。
然後呢接下來呢,我們就可以把一隻一隻股票拿出來,
每隻股票就可以把它的這個報酬呢跟市場的報酬呢 依照日期來合併,然後呢跑回歸,算出
我們前面說的這個 α 跟 β,然後把結果記下來。
就是大概就是是整個這個過程。
那,所以我們來看一下第一步就是要去做這個
讀檔跟寫檔,因為就是說我們需要把這個
檔案讀進來,對不對,然後再把它寫成 csv 格式,對不對,我們必須要做讀檔跟寫檔。
那 在這邊呢,讀檔跟寫檔呢第一步就是我們要把這個
你下載好的這個檔案把它用 python 把它打開,對不對,然後呢
打開之後呢會回傳一個所謂的 file handler,那這個我們在之前也 稍微地提到過,我們今天也會大致再介紹一下。
然後呢,這個 然後呢,我們就做一些適當的處理之後,把它寫到另外一個新的檔案裡面去。
這是大概是整個過程,所以呢這個過程
簡單地說就是是三步驟,就是是把檔案打開,然後呢看你是要讀檔或者要寫檔,
然後呢,最後呢做完之後再把檔案關起來。
那常常一開始的時候,大家在做這個事情比較會 忘記的事情就是說你會記得開檔,因為你不開檔的話啥事都不能做,
但是開完檔案之後有些時候會忘記把檔案關起來, 那你如果忘記把檔案關起來,有些時候會造成資料的流失。
那所以呢這個要記得,就是說這三步驟都必須要完成的。
那我們再很快地回顧一下所謂的這個檔案處理的這個做法。
那你如果要在 python 裡面處理檔案的話呢,這個我們用的是所謂的 open 的這個指令,那我們在
前一次的課程裡面事實有上大概有介紹過了,所以我們在這邊就很快地說一下。
你用 open 這個指令開檔的時候你會傳進檔名,對不對,還有你的模式, 還有你的檔案的這個編碼是什麼。
然後呢,我們大概也有說過就是說呢這個 回傳的東西事實上就是是一個
python 的變數,那它有一個名字叫做 file handler。
那就是就這個,如果是文字檔的話,一般我們 來說的模式就是是讀檔的話是 r,寫檔的話是 w。
那如果是非文字模式的話,就是 rb 跟 wb。
那 encoding 的話就是看
你的這個,你要讀寫的這個檔案是什麼格式,或者你如果要寫出去的話你要寫出成什麼格式。
比如說呢如果要讀一個資料檔,那檔名 叫做
numbers.dat 的話,大概可以用這個樣子,那這時候如果你沒有寫 encoding
的話, 它就會用系統預設的 encoding,那不一定是你喜歡的。
好,那如果說我們把這個 前面下載的資料集中在某一年,就是是
2016 年的資料把它存起來之後呢,那我們如果想要試圖用 python 打開
會發生什麼事情呢?那這時候我們就說呢這個 stock 的 FN
是叫這個名字,對不對,然後我們用 open 這個指令把它打開。
那這時候很不幸地,你如果這樣做的話,會有很大的機會會 fail, 那
fail 的原因是說它說 FileNotFoundError 的原因是 就是它這邊說的是它找不到檔案。
那為什麼會發生這個事情呢?那原因是 因為這個
python 找不到檔案嘛,那 python
為什麼找不到檔案呢? 原因是因為我們指定的這個檔名跟路徑
是沒有完全,意思就是說如果說 你要確保每一次
python 都可以找到它要的檔案的話呢,我們最好
會可以使用所謂的絕對路徑,絕對路徑叫做 absolute path。
那絕對路徑指的是說呢從這個根目錄開始一路往 一路往下的這個完整的路徑。
那比如說像在這個地方呢, 你如果你是檔案放在這個目錄的話呢,
它的這個絕對路徑是在 K 槽的這個 目錄下面的這個目錄的這個目錄的這個目錄的這個檔案。
那所以這一整串都有的時候呢,就可以確保它這個 python 總是可以找到
這個你要讀的檔案的內容。
那其中有一件事情在這邊呢,在這邊呢再次跟各位提醒,
就是這個路徑的一個特殊的一個狀況, 那就是說呢在不同的作業系統裡面呢
路徑的分隔會用不同的符號,在 Windows 下面它用的是所謂的
這個反斜線,在其他作業系統用的是斜線。
那這個反斜線是有特殊的意義,反斜線是所謂的這個跳脫字元,那跳脫字元的話呢
它的意思是說這個反斜線的下一個字是有特別的意思的,所以說呢
一個簡單的例子就是說,如果你要在一個字串,用雙引號定義的
字串裡面包含雙引號的話,你可以在這個字串裡面的雙引號前面加上反斜線,它會告訴 python
說呢這個反斜線的這個 下面那個字元呢事實上並不是
字串的結束,而是它就是只是一個雙引號的字元而已。
那這個事情如果套用在路徑上面,我們就會發現說如果你是直接把 這個
Windows 下的路徑直接 copy 過來的話,那這個反斜線就會造成 一些問題,因為像這個
\r 事實上是代表 所謂的的歸位的意思,那它是有特殊的意義的。
所以你這樣定義出來 的這個字串,這個檔案的絕對路徑就會不對。
那你要怎麼樣處理這個事情?就是要把所謂的這個 一個反斜線把它變成兩個反斜線,兩個反斜線呢
在這個字串的定義裡面它就是會把它解釋成一個反斜線,而不是一個跳脫字元。
所以呢你如果在 Windows 下面操作要特別注意這個事情,再次跟各位提醒。
好,那知道這個事情之後呢,我們就可以把我們 檔案存放的這個絕對路徑把它定義出來,
然後呢就可以用 open 這個指令把它打開。
然後呢把檔案打開,這時候要特別注意的就是說呢 這個《台灣經濟新報》使用的編碼是所謂的
cp950,cp950 事實上就是我們之前有提到的 所謂的
Big-5 編碼,那你如果把 這個檔案打開之後呢,你用
readline 這個指令去讀第一行
的話,把它印出來就是這個中文的名稱,中文的變數名稱。
那你如果再去讀下一行的話呢,就會是英文的變數名稱。
那依此類推,那你如果一行一行讀的話,它就會把一行一行的 內容全部讀出來,那最後當然你就是需要把這個
把這個檔案關起來,就是用 fh1.close 這樣子。