【邢不行|量化小讲堂系列54-实战篇】量化投资中经常使用Excel,可能会被同事打

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/xingbuxing_py/article/details/100044028

引言:

邢不行的系列帖子“量化小讲堂”,通过实际案例教初学者使用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线代码)

联系邢不行

​如果你想入门量化,但是始终找不到方向,可以加入我的知识星球。我会在里面解答你的问题,分享我的感悟,不论是投资、技术,还是职业选择、思维方式。

                                                                      -- 学习和成长从来都不是一个人的事 --

猜你喜欢

转载自blog.csdn.net/xingbuxing_py/article/details/100044028
今日推荐