【邢不行|量化小講堂系列54-實戰篇】量化投資中經常使用Excel,可能會被同事打

引言:

邢不行的系列帖子“量化小講堂”,通過實際案例教初學者使用python進行量化投資,瞭解行業研究方向,希望能對大家有幫助。

【歷史文章彙總】請點擊此處

【必讀文章】EOS期現套利,一週時間,15%無風險收益

                     10年400倍策略分享(附視頻逐行代碼講解)

個人微信:xingbuxing0807,有問題歡迎交流。

 


量化投資中經常使用Excel,可能會被同事打

這是邢不行第 54 期量化小講堂的分享

作者 | 方寧、邢不行

 

在量化研究中,使用Python處理數據之前,常常需要要先肉眼看一下數據,形成最直觀的認識。

 

當你打開數據文件,99%的情況系統會默認幫你選擇Excel打開,這是初學者最常用的表格工具,沒有之一。確實在多數情況下,Excel可以很好的顯示數據,也方便我們做初步的排序、篩選、作圖。

 

但使用Excel也有一些隱藏的深坑,不注意的話很容易帶來麻煩。

 

本文就來細數Excel的那些坑,並且提供解決方法。同時,也會推薦更適合在量化投資中,用來查看數據的工具                        

下面這張圖就是上證指數日K線的一小段,注意看最後兩列數據:

                                                         Excel 列太窄的時候,會顯示成“###”或省略掉小數部分

 

  1. 倒數第二列沒有正常顯示成交量數字,而是顯示爲“####”;
  2. 最後一列開盤價應該精確到小數點後三位,但圖中只有整數部分。

 

這是數據的問題嗎?要不要檢查下數據來源重新採集數據?

 

答案是不需要。讓我們看看文件數據本來的樣子:

                                                                                    真實csv數據的樣子

我們發現原始數據跟Excel顯示的很不一樣,是不是感覺 Excel 吃掉了很多細節?如果我們不知道的話,很容易覺得是數據有問題,然後費勁心思重新爬了一遍,還是顯示成這個樣子。

 

但是其實數據好着呢,有問題的是Excel顯示格式:你的數字太寬了,Excel忽略顯示了部分內容。

 

這種情況也很好辦:把你覺得顯示不完整的列拉寬即可

 

上文中倒數兩列成交額和開盤價不是顯示不完整嘛,我們手動拉寬這兩列,然後成交額就顯示成了下圖中類似於1.2E+10這種格式:

                                                                       Excel 會使用科學記數法顯示長數字

 

這和我們原始數據的中展示的仍然不一樣。Excel這麼顯示的原因是因爲當數字過大時,會默認使用科學計數法展示數字,以節省屏幕上顯示的空間。

 

很多人不習慣用科學計數法來看數字,確實科學計數法只顯示前幾位有效數字,不方便我們形成對數據的直觀感受。

 

不想看到科學計數法也很好辦,分兩步走:

  1. 把顯示成科學計數法的列拉寬
  2. 拉寬還不行的,選中整列,手動調整單元格格式,推薦直接設成文本。

                                                                             選中整列設置單元格格式

                                                                              推薦把單元格格式設成文本
                                                                             

我們再來看一個日期格式的例子。

在原始數據中,日期是“年-月-日”這樣的格式:

                                                                          原始csv數據,日期格式爲 “年-月-日”

但是到了Excel裏打開,日期就從“年-月-日”,變成了 “年/月/日”。

​                                                                        用Excel查看csv文件,日期格式爲“年/月/日”

 

這麼顯示是因爲 Excel 會自動判斷單元格的格式,一旦判斷成日期的數據,就會自動轉換成“年/月/日”的格式。

 

這個坑副作用很大:如果用Excel打開並保存了,日期的格式就會從“年-月-日”變成“年/月/日”,原本是我們常用的pandas可以直接識別的日期格式,轉換之後就需要手動調用 pd.to_datetime 函數來處理。

 

針對這個問題,可以只用 Excel 打開,不用 Excel 保存,這樣就只是看着不一樣了,數據還是不變的。或者在單元格格式裏設成“日期”類別裏的“年-月-日”格式                                                                                   

有的時候,我們用Excel打開的歷史數據所有中文都是亂碼,遇到過的人都知道那是怎樣一種絕望的體驗:

                                                                         用Excel看某些csv文件中文是亂碼

 

這是因爲不同系統下中文的編碼格式不同,unix/linux家族,包括mac、linux、ios、android系統默認使用utf8編碼,windows使用的是GBK/GB2312編碼。這兩種編碼的中文字符都是互不兼容的。

 

當我們使用Python讀入導出數據時默認使用utf8編碼,而不管是mac還是windows下的Excel都使用GBK編碼,這就導致了Python導出的文件用Excel讀中文會亂碼的問題。

​                                                                               不同編碼問題的例子和原因

 

只要不使用Excel修改文件,對我們用Python量化分析就沒有影響。不可避免地會干擾我們看數據:中文亂碼了之後,我們就不知道每一列數據對應的是什麼了,連哪列是開盤價哪列是前收盤價都不知道,很難形成對數據的直觀認識。

 

而一旦用Excel打開發現是亂碼,然後用Excel保存了之後,在Python裏面讀取中文也是亂碼,到了這一步基本上就無藥可救了。                                                                                        

Excel 存在最大行數限制,顧名思義,Excel只能顯示到一定行數,超過這個最大行數的部分就不顯示了。不知道這個坑的時候,就會“咦,我的數據怎麼沒了?”。

2003版本只能顯示到65536行,之後的版本可以顯示到1048576行。同樣的,也存在最大列數限制。超出這個範圍的數據Excel不會顯示。

 

好在最大行數限制沒有副作用,只是顯示問題,不影響數據。就算用 Excel 打開再保存了,也不會丟掉沒有顯示的數據。            

以上Excel的問題,導致在用它來查看數據時不是很順手。更好的做法是使用專業的文本編輯器來查看數據。

 

下面推薦三個方案供大家選擇:

  1. Notepad++
  2. Visual Studio Code
  3. Pycharm

 

另外,因爲絕大多數文本編輯器不能讀Excel格式的文件。所以在數據工作中,大家千萬不要把數據保存成Excel格式,而是推薦使用csv格式存儲原始數據。csv本質上就是一個純文本文件,用文本編輯器和Excel都能方便打開。                                              

Notepad++是一款強大的文本編輯器,只支持Windows,不支持mac。軟件很小,非常輕便。使用Notepad++可以看到csv數據原始的樣子:

​                                                                                 使用notepad++查看csv文件

 

用notepad++根本不會遇到剛剛上文說的5個坑。可以顯示出csv數據最原始的樣子,沒有行數限制,能自動識別文件使用的是GBK還是UTF8編碼。自動識別不出來的時候也可以手動指定編碼,基本不用擔心遇到亂碼的問題。

 

當然,跟Excel比起來,缺點也很明顯:

 

  1. 沒有對齊,想要對應哪列是什麼數據比較費勁。特別是數據的位數變化比較大的時候,整體看起來會很亂;
  2. 不能篩選、排序等等;
  3. 只能讀取csv格式,不能讀xls、xlsx等格式;
  4. 僅限Windows系統使用。

 

我們下面推薦另一款軟件,可以解決 Notepad++ 的這幾個缺陷。               

VSCode(Visual Studio Code)是近幾年興起的編輯器。特點是插件強大,通過自帶的市場安裝一些插件,可以達到極值的體驗。

 

直接用 VSCode 打開csv文件就和 Notepad++ 顯示的結果一樣:

一旦裝上“Excel viewer”插件,就可以實現接近Excel的顯示效果,甚至還可以篩選和排序。

​                                                                           VSCOde 安裝 Excel viewer 插件

 

安裝好插件之後,我們就可以使用插件來查看csv和xlsx格式的數據文件了。

​                                                                            使用Excel viewer 插件查看文件的方法

                                                                             使用Excel Viewer查看文件的效果

 

配合Excel viewer插件,使用VSCode查看數據的體驗非常接近Excel

 

總結下,使用VSCode配合插件有以下幾個優點:

  1. 不用擔心單元格格式問題,顯示的就是數據原本的樣子;
  2. 不存在最大行數限制;
  3. 可以方便地更改文件編碼
  4. 可以查看csv和xlsx格式;
  5. 可以像 Excel 一樣篩選和排序
  6. 全平臺制霸。不管是Windows、macOS還是Linux,都可以使用VSCode和絕大多數插件。

 

另外,如果是參與了邢不行Python量化交易課程的同學,會看到邢不行經常使用Pycharm 來做量化分析。其實 Pycharm 功能也很強大,可以當做文本編輯器來使用。讓我們看看在Pycharm中怎麼查看 csv 格式的數據文件。

通常我們做Python量化都會使用Pycharm來寫程序,所以如果能直接用Pycharm來查看就更好了。

 

事實上是可以的。csv就是純文本,直接用Pycharm打開看就和notepad++一樣。另外,我們也可以給Pycharm裝插件,讓Pycharm看csv的體驗接近Excel。

                                                                                 Pycharm 安裝csv插件

 

安裝完後需要重啓Pycharm讓插件生效,我們打開一個csv文件,看起來沒有什麼變化。仔細觀察就會發現最下面多了一個選項

                                                                                     Pycharm查看csv文件

                                                                               Pycharm表格視圖查看csv文件

 

稍微調整下顯示格式之後,就可以像在Excel裏面一樣看csv格式的文件。

 

使用Pycharm來查看數據文件,除了不會遇到前面說到 Excel 的五個坑之外還有以下幾個優點:

 

  1. 表格視圖接近 Excel 的體驗
  2. 使用Pycharm 同學可以不用另外裝軟件了;
  3. 全平臺制霸,通吃Windows、macOS和Linux。

 

相對而言,缺點也明顯:

 

  1. 對不用pycharm的同學來說,就要另外裝一個重量級的軟件;
  2. 不支持篩選、排序
  3. 只能讀取csv格式。

前面說到的Excel坑,都是很多人會問起的。編碼問題、顯示問題和最大行數限制,如果不是事先知道這些坑,碰上了都會覺得是數據的問題,然後大費周章不止一次地重採數據,結果問題並沒有解決。

 

由於我們使用Excel僅僅是爲了查看數據形成對數據的直觀感受,實在沒必要浪費力氣跟Excel死磕。

 

建議查看數據的時候不要用Excel,換文本編輯器來看數據。前面說到的notepad++、VSCode、Pycharm就是很好的選擇,可以根據自己的情況選擇合適的。

 

推薦閱讀

2018量化炒幣7大玩法覆盤 | 視頻、PPT分享

收藏!量化小講堂前50篇合集(含代碼)

警惕!避免數字貨幣交易所排名陷阱:識別刷量問題(上)

警惕!數字貨幣交易所排名陷阱:到底哪家交易最活躍?(下)

歷年排名前10的基金,在第2年表現如何?Python告訴你答案

在量化投資中,原來K線還能這麼畫(附畫K線代碼)

聯繫邢不行

​如果你想入門量化,但是始終找不到方向,可以加入我的知識星球。我會在裏面解答你的問題,分享我的感悟,不論是投資、技術,還是職業選擇、思維方式。

                                                                      -- 學習和成長從來都不是一個人的事 --

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章