Jupyter 是一款免费、开源的交互式 web 工具。研究人员可以利用该工具将软件代码、计算输出、解释文本和多媒体资源组合在一个文档中。计算笔记本已经发展了几十年,但是过去几年里,Jupyter 特别受欢迎,更是成为数据科学家们实战工具的首选。个中原因如何?本文带你一探究竟。

数据科学

大型综合巡天望远镜(Large Synoptic Survey Telescope,LSST)坐落在智利安第斯山脉帕穹山脊,计划 2022 年启用。它将自动探测南方的天空,每晚产生数兆字节的数据。为了处理这些数据,天文学家将要用到一个熟悉且日益流行的工具——Jupyter notebook。

Jupyter 是一款免费、开源的交互式 web 工具,是一种计算笔记本(computational notebook)。研究人员可以利用它将软件代码、计算输出、解释文本和多媒体资源组合在一个文档中。计算笔记本已经发展了几十年,但是过去几年里 Jupyter 特别受欢迎。因为它的架构经过重新设计,允许 notebook「说」几十种编程语言,所以深受开发人员的喜爱。而根据其共同创始人 Fernando Pérez 的说法,这一点更体现在它的名字中:Jupyter——Julia ( Ju )、Python ( Py )、R。

对代码共享网站 GitHub 的一项分析显示,截至 2018 年 9 月,Jupyter 上公开的 notebook 超过了 250 万份,而 2015 年这一数字仅为 20 万左右。Pérez 表示,Gmail 和 Google Docs 等 web 软件的改进是驱动其使用量增长的一个原因;Python 和数据科学的成熟也是其中一个原因,尤其是 notebook 可以轻松地访问远程数据,因为有些数据可能无法下载(比如 LSST 的数据)。针对 Jupyter 基于云的能力,Pérez 表示,很多情况下,把计算机移动到数据比将数据移到计算机内要容易得多。因为这种架构相当于告诉读者数据在哪里,而且还提供了一台电脑。

华盛顿特区乔治·华盛顿大学的机械和航空工程师 Lorena Barba 说,对于数据科学家来说,Jupyter 已经成为事实上的标准。而负责协调 LSST 数据管理团队的西雅图华盛顿大学天文学家 Mario Jurić则表示,「我从未见过这么快的迁移,真是太好用了!」

数据勘探

可计算的 notebook 本质上是用于科学计算的实验室 notebook。比如说,研究人员没有将 DNA 凝胶黏贴在实验室协议旁边,而是嵌入代码、数据和文本来记录他们的计算方法。圣路易斯·奥比斯波加州理工州立大学的 Jupyter 联合创始人 Brian Granger 说,这种做法的结果是产生了「计算叙事」——一种允许研究人员用分析、假设和推测补充其代码和数据的文件。

对于数据科学家而言,这种格式可以推动探索。Barba 表示,notebook 是一种交互式计算方式,在这种环境中,用户可以执行代码,观察结果,修改并重复研究人员与数据之间的一种迭代对话。它并不是这种对话的唯一载体,交互式 Python 解释器 IPython(Jupyter 前身 IPython Notebook 的创建基础)也是一种载体。但 notebook 允许用户记录这些对话,并在「主题、理论、数据和结果之间建立更强大的联系」。

研究人员还可以用 notebook 为其软件创建教程或交互式手册。哈佛大学的系统神经科学家 Mackenzie Mathis 对 DeepLabCut 就是这么做的。DeepLabCut 是其团队为行为神经科学研究开发的一个编程库。他们可以用 notebook 来准备手稿,或者作为教具。自 2013 年开始,Barba 就在她所教的每门课程中实施了 notebook。在 2014 年的一次主题演讲中,她还讲述了 notebook 让学生以课堂无法比拟的方式互动地参与课程并从中受益的经验。她说,「IPython notebook 确实是科学和工程教学计算的一个杀手级应用程序。」

说我的语言

Jupyter notebook 有两个组件。在前后端网页中,用户在矩形输入框中输入编程代码或者文本。然后浏览器把代码输送到后端内核,后端内核运行该代码并把结果反馈回来。据 Pérez 统计,已经有超过 100 个 Jupyter 内核被创建,支持数十种编程语言。正常来说,每个 notebook 只能够运行一个内核和一种语言,但存在工作区。例如,一个 Demo notebook,支持 Python、Julia、R 和 Fortran。

重要的是,内核不需要驻留于用户的计算机。当 LSST 的未来用户使用 Jupyter notebook 来分析数据时,代码会在位于伊利诺斯州的超级计算机上运行,提供台式机、笔记本无法比拟的算力。Notebook 也可以在云上运行。例如谷歌的 Colaboratory 项目,为 Jupyter notebook 提供了以谷歌为主题的前后端。它使得用户能够协作、运行利用谷歌云资源的代码,例如图处理单元,可以把文档保存在谷歌 Drive 上。

Jupyter 的最新版本是 JupyterLab,于 2018 年 1 月作为测试版发布,它既能作为独立的安装包使用,又能作为免费 Anaconda 科学计算环境的一部分使用。

Jason Grout 是加州旧金山金融服务公司 Bloomberg 的一名软件工程师,也是 JupyterLab 团队的一员。他将 JupyterLab 称为 Jupyter notebook 的「下一代 web 接口」,它通过拖放功能以及文件浏览器、数据查看器、文本编辑器和命令控制台扩展了人们熟悉的 notebook 的内涵。标准 Jupyter notebook 向每个 notebook 分配单独的内核,而 JupyterLab 创建了一个允许这些组件共享的计算环境。因此,用户可以在一个窗口中查看 notebook,在第二个窗口中编辑一份所需的数据文件,在第三个窗口中记录所有的执行命令——所有窗口都在一个 web 浏览器接口中。

用户也可以对 JupyterLab 进行调整,使其适合自己的工作流程。例如,内置查看器用于查看图片、文本和 CSV 文件,但用户也可以构建自定义组件。这些组件可以展示基因组比对、地理空间数据等。参加 Pérez 的一名学员甚至还创建了一个用来展示 3D 大脑成像数据的组件。他表示,「显然,这完全是一个神经科学领域专用工具——Jupyter 团队没有必要写这种东西。但我们提供了正确的标准,那个团队就可以在 24 小时之内写出一个来。」

还有两种工具增强了 Jupyter 的用途。一个是 JupyterHub,这种工具允许机构向大量用户提供 Jupyter notebook。Pérez 任教的加州大学伯克利分校的 IT 团队已经部署了这样一个中心,Pérez 利用该中心确保参加其数据科学课程的所有学生拥有相同的计算环境。他表示,「我们不可能管理 800 名学生的 IT 支持,帮助他们调试电脑,以及找出他们笔记本电脑安装程序后无法运行的原因;这根本行不通。」

另一个工具是 Binder,这是一种开源服务,允许用户在 web 浏览器中的 GitHub 上使用 Jupyter notebook,无需安装软件或任何编程库。用户也可以在谷歌云上执行 Jupyter notebook,通过在 GitHub 上 notebook 里的 URL 之前键入 https://colab.research.google.com/github 或使用 Code Ocean 商业服务。9 月份,Code Ocean 为其基于云的代码共享和代码执行服务推出了一个新的用户接口,同样也基于 Jupyter。

值得注意的问题

这种工具通过简化代码重用来实现计算再现性。但用户仍需知道如何正确使用 notebook。

Joel Grus 是华盛顿州西雅图艾伦人工智能研究所(Allen Institute for Artificial Intelligence)的一名研究工程师,今年年初,他在纽约 Jupyter 开发者大会上做了一场主题为「我不喜欢 notebook」(I don't like notebooks)的演讲。他说,他见过 notebook 不按预期运行时编程者受挫的样子,通常是因为他们无意中运行了无序的代码单元。他指出,在 Jupyter notebook 中将代码按逻辑整理出来非常困难,因此编程实践体验很差,它将代码分解成可重用的模块,并开发测试来确保代码正常工作。

Grus 坦言,这些并非不可逾越的困难,但 notebook 在执行代码时的确需要规则:例如,将分析代码移到可以从 notebook 中调用的外部文件中,在 notebook 的顶部定义关键变量,定期重启内核以及自上向下地运行 notebook。一位 Twitter 用户打趣道:「你得重启并运行所有程序,否则没办法用。」

这是 Barba 试图灌输给学生的一课。「上课第一天我就向学生解释说,他们可以以非线性的方式与 notebook 交互,这激发了他们巨大的探索能力,」她说。「但力量越大,责任越大。」

Verdant 可能是一种有帮助的工具,它是 Jupyter 里面一个可以捕捉用户活动历史的插件。「作者构建了一个扩展,可以实现灵活的用户工作流程,同时捕捉执行的特定代码,以什么顺序以及在什么样的特定数据上,」加州州立理工大学 Jupyter 团队的成员 Carol Willing 表示。

Jake VanderPlas 是谷歌的一名软件工程师,也是 Colaboratory 的成员之一,他表示,notebook 就像锤子一样:他们可能被滥用,也并非适用于所有应用。但在数据探索和沟通方面,notebook 表现出色。天文学界似乎同意这种说法。「大约六年前,还没有 Jupyter notebook,现在我们却每天都在用它,」Jurić表示。

原文发布时间为:2018-11-2
本文作者:Jeffrey M. Perkel
本文来自云栖社区合作伙伴“CDA数据分析师 ”,了解相关信息可以关注“CDA数据分析师”。

业界 | 为什么Jupyter是数据科学家们实战工具的首选?相关推荐

  1. 一位数据科学家的私房工具清单

    作为一位万人敬仰的数据科学家,不但需要培育一棵参天技能树,私人武器库里没有一票玩得转的大火力工具也是没法在江湖中呼风唤雨的. 近日北卡来罗纳大学CTO,一位数据科学家Jefferson Heard分享 ...

  2. cassandra可视化工具_一位数据科学家的私房工具清单

    作为一位万人敬仰的数据科学家,不但需要培育一棵参天技能树,私人武器库里没有一票玩得转的大火力工具也是没法在江湖中呼风唤雨的. 近日北卡来罗纳大学CTO,一位数据科学家Jefferson Heard分享 ...

  3. 数据科学家和大数据技术人员工具包

    数据科学家的常用工具与基本思路,数据分析师和数据科学家使用的工具综合概述,包括开源的技术平台相关工具.挖掘分析处理工具.其它常见工具等几百种,几十个大类,部分网址.为数据科学教育和知识分享,提高数据科 ...

  4. 免费公开课 | 数据科学家,从入门到精进!【今晚福利】

    <哈佛商业评论>宣布,"数据科学家"是二十一世纪最性感的职业.数据科学家究竟是一群怎样的人?各行各业高薪难求的他们又是如何开启自己的职业生涯的? 滴滴 ~福利卡!!! ...

  5. 现代化机器学习工具,助数据科学家开展更多工程或业务功能

    数据科学的发展日新月异,机器学习的角色正从数据科学的混合角色过渡到更多的工程或面向分析的角色,主要是以下的因素促成了这种变化: 机器学习模型更多地被应用到生产系统中,需要数据科学家具有比以前更深入的技 ...

  6. python处理表格很厉害么_还在用excel?太落伍了,现在都用Python和Jupyter处理数据了...

    全文共3246字,预计学习时长8分钟 如果你从事的是商业交易或者在金融机构工作,Excel是必备技能. 你可以用它分析价格及其他tick数据.评估投资组合.计算风险价值.进行事后检等等.你熟练掌握数据 ...

  7. 大数据 端到端_成为数据科学家的端到端指南

    大数据 端到端 数据科学提示/入门指南 (DATA SCIENCE TIPS /BEGINNERS GUIDE) Data Science has improved considerably over ...

  8. 5年400倍增长,Airbnb首位数据科学家揭秘他们到底怎么做的?

    五年前我加入了Airbnb,成为公司第一位数据科学家. 当时人们连公司的名字都不会发音,如果不算正在接受心理咨询的哥们儿,实习生,旁边咖啡店里的咖啡师,团队只有大约七个人.我们的公司就在创始人在SOM ...

  9. 如何成为数据科学家?数据科学业界大牛们倾囊相授

    在大家的眼中,科学家的形象可能是一位表情严肃.着装单一.不修边幅.戴着一副厚重眼镜且天庭饱满,发际线无限上移的中老年理共男.但实际上,他们正式体面,幽默无比,可谓是集涵养和趣味于一身的真正撩妹达人! ...

最新文章

  1. 7.26T1四分图匹配
  2. 阿里云数据库产品HybridDB简介——OLAP数据库,支持行列混合存储,基于数据库Greenplum的开源版本,并且吸收PostgreSQL精髓...
  3. Linux/Centos Mondo 一键部署、镜像恢复,快速部署
  4. STM32的独立看门狗(IWDG)看门狗时间计算
  5. 1.6.3 Uploading Data with Solr Cell using Apache Tika
  6. php 26个字母大写,英语26个字母大小写怎么写
  7. cpu风扇声音大_电脑嗡嗡响,换个大尺寸的CPU风扇,世界一下子安静了
  8. [转]Muilti-touch 双指缩放的实现探索
  9. 【LeetCode笔记】剑指 Offer 38. 字符串的排列(Java、字符串、DFS)
  10. How To Replace The Firefox Icon With Your Logo
  11. Style transfer系列论文之——Image Style Transfer Using Convolutional Neural Networks,CVPR, 2016
  12. 移动端H5 QQ在线客服链接代码
  13. xlsxwriter模块安装linux,XlsxWriter模块常用方法
  14. linux上mysql初次运行的报错
  15. Q-criterion- definition and post-processing
  16. 应届生职场入门毒打指南
  17. 邮箱功能开发总结(以新浪邮箱为例子)
  18. 已知三边 求三角形面积
  19. Angular8通过npm引入Mapbox GL 和 Ant L7
  20. 两位阿里大牛联合敬献,码出高效的Java学习笔记,你值得拥有

热门文章

  1. 【论文简述及翻译】Learning for Disparity Estimation through Feature Constancy(CVPR 2018)
  2. 如何删除MacOS自带的输入法的自造词(Catalina)
  3. 截图软件:Snipaste for Mac中文(2.6.4beta官方)
  4. 鹏业四川CJZ整体解决方案
  5. Excel - 表格设置数字下拉数值不变不递增
  6. 【Practical】蒙特卡罗法及其应用
  7. Androidstudio配置git及连接远程库全过程
  8. git submodule添加和删除
  9. cl.ez6.xyz index.php,[BJDCTF2020]EzPHP-POP链
  10. python程序设计第五章答案_中国大学MOOC第五章单元测试答案_Python程序设计期末答案...