做数据只知道Excel?Jupyter Notebook也要学起来了

百家 作者:机器之心 2019-06-25 07:11:39

选自towardsdatascience

作者:Semi Koen

机器之心编译

参与:胡曦月、张倩

Excel是交易员或金融从业者的生计之本,但在数据量较大或需要对数据进行深入挖掘时,Excel似乎就有点不够用了。那么,有什么新的工具可以作为代替呢?本文作者给出的答案是Jupyter Notebooks。

如果你是一名交易员或者从事金融服务行业,那么 Excel 就是你的生计之本。有了它,你可以分析价格和实时数据、评估交易组合、计算 VaR、执行回测等等;有了它,你就是数据透视表、公式、图表甚至 VBA 和 PowerQuery 的专家。


然而,尽管你可以快速处理解决方案,但在你得到结果之前,电子表格已经扩展到数十个标签页、上千行以及数不清的 VBA——这使得它的可读性和可维护性遭到破坏。如果你胆敢用 F9 键刷新结果,那你就可以喝杯茶再多等一会儿了(前提还得是你的电脑在这期间没有崩溃)!


很熟悉的场景吧?你大概已经在频频点头了。


尽管 Excel 十分有用,但是对数据进行深入挖掘时,电子表格并不能提供你想要的所有答案。下面来看看 Excel 为什么这么火,又有哪些不足,最重要的是,为什么应该用 Jupyter Notebook 来替代它成为你的强大数据分析工具。


天堂般的 Excel


使得 Excel 如此有价值的因素有多个,最值得注意的是它简单却强大的基于内置函数的响应式计算模型。电子表格就像是一块空画布,「业余程序员」可以在这上面用 Excel 专用语言(公式或者 VBA)进行编程。


尽管银行为了运行业务关键流程部署了广泛的 IT 系统,但以电子表格形式存在的 Shadow IT 仍呈爆炸式增长,Shadow IT 补充了这些核心系统,并成为新业务计划的默认工具。正是由于企业系统不够灵活,无法适应动态金融环境所提出的快速上市要求,这才有了 Excel 来填补这一缺口。


Excel 可能很方便,但这是否意味着它就是正确的方法呢?


Excel 在企业中的角色需要重新定义了!


地狱般的 Excel 


想用电子表格对大量数据进行高级响应式分析?那可就用错工具了。


下面是 Excel 高级用户所面临的一些问题:


  • 级联错误:Excel 一个臭名昭著的问题是,错误会沿着列传播,然后到整个表格,就好像雪球最终变成雪崩一样。可怕的是,有时错误发现时已为时已晚。

  • 可扩展性:Excel 可处理的行列数是有限制的。随着数据集以指数速度增加,电子表格很快就会耗尽内存或消耗大量 CPU 资源,此时数据损坏的风险就会上升。

  • 性能:在复杂的工作簿中,修改一个数字可能会影响到数百个重复计算,Excel 需要时间来处理每个数字。表格达到一定规模后不仅自身的速度会下降,还会影响到计算机上其它需要内存空间的应用程序的性能。

  • 测试:想要测试一个电子表格的正确性几乎是不可能的,更别提还要证明后续更改不会破坏任何其他内容。

  • 可追溯性/调试:往往一个很小的修改就会显著破坏你的复杂公式,从而使得问题难以识别和修复。

  • 全部包含:数据和计算全部包含在一个 Excel 文件中,并且在本地计算机上运行。这就意味着协作受限、版本控制成为噩梦。此外,数据也只能是基于最近更新的静态数据,而无法随着条件变化而实时更新。


传统软件在数十年前已经解决了以上这些问题。


最后同样重要的一个问题是:


操作风险:所有电子表格最初都是小型/快速修复计算,但有些最终成为了永久性的企业级解决方案。它们提供了大量业务流程,但却缺乏全局谱系的可见性,从而使得许多财务、运营和监管流程的完整性受到威胁。



Hello,程序员;Bye-bye,交易员


传统上,银行将定量交易团队分为定量交易员和定量开发者。前者提出交易想法,后者将这些想法转化为可执行代码。如果你作为交易员的同时也熟悉编程,那就不再需要这种分工,这也为你提供了竞争优势:不仅可以在银行希望优化成本时避免被裁员,还可以将自己的交易模型付诸实践,并利用时间优势获利。解放双手,将枯燥的任务自动化,编程真的很有创造力!


在这个时代,更多的初级交易员都具备 uni 编程技能,因此想要保持职场竞争力就得要参与其中。


如何在 Python 和 Jupyter笔记本 上使用 Excel


那么,当交易员和金融专家们发现 Excel 有诸多限制时(不是因为版本过低时),该如何解决呢?


答案是,学习 Python,并且使用 Jupyter 笔记本来做开发环境!


Python


Python 相当易于学习且用途广泛,因此在金融社区中使用渐多,与 Excel 一样,它现在是许多量化工具的先决条件。它没 C++(或 Java)那么复杂,也就意味着:1. 学习曲线没那么陡峭;2. 完成一个任务所需的代码量要少 80%-90%。


Python 的日益普及可以从大量支持交易员所需的各种工具库看出来。


  • 数据的读、写、清洗、传递、分层/分割

  • 数学、统计、时间序列

  • 财务分析:交易和计量金融、市场数据分析、股票/衍生产品市场分析、彭博数据访问、执行引擎、回测、风险分析等等

  • 机器学习工作流(如预测市场价格)

  • 绘图和交互式可视化

  • SQL 支持

  • 发送邮件

  • 网页抓取(如获取在线市场数据)

  • 任务自动化/安排

  • Excel 集成(如果你确实非常喜欢 Excel)


Jupyter


同样地,Jupyter Notebook 是一个基于 Web 的计算环境,能够让你创作包括以下内容的文档:实时代码、图形、小部件、丰富的叙述文本(包括链接、公式等)、图片等。更具体地说,你能够:


  • 在浏览器中编辑代码:自动语义高亮、缩进、tab 命令补全/内省(introspection)

  • 运行浏览器中的代码:在代码后附加其计算结果


它们提供了一种全包式的、独立的运算记录,从而使其代替 Excel 作为实时数据分析平台。



The sweet spot


你可能会想:我还要再用 Excel 吗?当然了。


在下面这些情况下,电子表格依然是你最好的选择:


  • 正确性和精确性并非优先事项

  • 数据量不大(比如不需要可扩展性)

  • 无需实时更新

  • 使用 Excel 作为便签薄快速整合原型

  • 无需长期维护


当你需要快速开发、验证正确性和可扩展性,同时又要保持和 Excel 一样的反应模型时,就是 Jupyter Notebook 大展身手之时。


不,Excel 并未淘汰,但 Jupyter Notebook 是更好的数据分析工具!


尽管我已经明确提到使用 Python/Jupyter 组合相较于 Excel 的一些实质性优点,在「地狱般的 Excel」小节中也隐晦地提到一些,我还是要把前十个优点列表如下:


  • 强大的数据操作 - 毕竟是数据科学家的工具箱!

  • 先进的可视化功能- 不再是枯燥的图标!

  • 更好的用户体验

  • 大数据处理 - 不再崩溃!

  • 性能管理 - 利用多处理器

  • 测试驱动的开发 - 考虑质量!

  • 开源可访问性 - 它有一个库

  • 错误追踪

  • 自动化更加简单

  • 自编文档 - 不要低估它的价值!


从哪开始


我发现新进入这一领域可能令人生畏,但是编程并非学习语法,而是使用正确的语言和工具来解决问题:在本文中也就是 Python 和 Jupyter。


这里提供两个非常好的入门资源:


Think Python 免费电子书下载:http://greenteapress.com/thinkpython2/html/index.html


Jupyter Notebook 新手在线工具教程:https://www.dataquest.io/blog/jupyter-notebook-tutorial


重点是:Stay relevant!


结束语:


难以想象没有电子表格的企业界!


银行开始发现 Python 可以在其关键工作负载中作为 Excel 的替代品。最近,Barclays 因其培训交易员编程而成为新闻头条。我想你也应该遵守这个范例,你不会失望的!


让 Excel 去做它擅长的事,用 Python 和 Jupyter Notebook 来完成分析和自动化!


参考链接:https://towardsdatascience.com/jupyter-is-the-new-excel-a7a22f2fc13a



本文为机器之心编译,转载请联系本公众号获得授权

✄------------------------------------------------

加入机器之心(全职记者 / 实习生):hr@jiqizhixin.com

投稿或寻求报道:content@jiqizhixin.com

广告 & 商务合作:bd@jiqizhixin.com

关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接