做数据只知道Excel?Jupyter Notebook也要学起来了
选自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 bi ji ben 上使用 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