3.1. Jupyter技术概览

官网的介绍是:Jupyter Notebook是一个Web应用程序,允许您创建和共享包含实时代码,方程, 可视化和说明文本的文档。 用途包括:数据清理和转换,数值模拟,统计建模,机器学习等等。

3.1.1. Jupyter的历史背景和发展

Jupyter项目起源于IPython项目,一个由Fernando Pérez在2001年启动的交互式Python解释器。 随着项目的发展,Jupyter逐渐演变为一个支持多种编程语言的交互式计算环境。 名称 JupyterJuliaPythonR 三种编程语言的名字组合而成,反映了项目支持多语言交互计算的宗旨。

Jupyter项目的核心组件是Jupyter Notebook, 允许用户在浏览器中创建和共享包含实时代码、方程、可视化和叙述性文本的文档。 随着时间的推移,Jupyter生态系统已经扩展,包括了JupyterLab、JupyterHub以及许多其他工具和扩展,进一步增强了Jupyter的功能。

备注

IPython 是一种交互式 shell,与普通的 Python shell 相似,但具有一些很好的功能(例如语法高亮显示和代码补全)。

那么Notebook 如何工作呢? 最初 Notebook 的工作方式是将来自 Web 应用(在浏览器中看到的 Notebook)的消息发送给 IPython 内核 (在后台运行的 IPython 应用程序)。 内核执行代码,然后将结果发送回 Notebook 。 如 图 3.1

Jupyter结构

图 3.1 Jupyter结构

更复杂的 Jupyter 设计示意图如 图 3.2 所示:

Jupyter设计

图 3.2 Jupyter设计

3.1.2. Jupyter的核心组件

Jupyter Notebook

Jupyter Notebook是Jupyter项目中最著名的组件,它是一个开源的Web应用程序,允许用户创建和分享包含实时代码、方程、可视化以及叙述性文本的文档。Notebook文件有一个.ipynb的扩展名,可以轻松地在不同用户之间共享,支持多种编程语言。

  • 特点 :提供了一个富文本编辑器,支持Markdown、HTML、LaTeX和SVG等格式。它使得数据清洗、转换、数值模拟、统计建模、数据可视化以及机器学习等任务变得更加直观和交互式。

  • 应用 :广泛应用于数据科学、科学计算、机器学习教育和研究等领域。

JupyterLab

JupyterLab是Jupyter项目的下一代Web前端用户界面,提供了基于Web的可扩展环境,用户可以在其中处理笔记本、代码、数据和文本文件。JupyterLab旨在提供一个统一的环境,其中包含Jupyter Notebook的所有核心功能,并添加了更多的改进和增强功能。

  • 特点 :具有模块化和可扩展的架构,支持多个Notebook和其他文档(如Markdown文档、图像等)并排显示,提供了内置的文件浏览器、富文本编辑器、终端以及自定义组件等。

  • 应用 :适用于需要更复杂数据分析和研究工作流程的用户,提供了更强大的工具和界面来探索和分析数据。

IPython核心

IPython是Jupyter项目的核心,最初是作为Python的一个增强的交互式解释器启动的,现在已经成为支持交互式计算的强大工具。IPython提供了一个丰富的工具集,用于交互式计算,包括:一个强大的交互式Shell、一个架构化的历史记录、用于交互式数据可视化的集成绘图功能、以及对并行计算的支持。

  • 特点 :通过提供高级自动补全、探索和可视化功能,改善了用户的交互式编程体验。

  • 应用 :作为Jupyter Notebook和JupyterLab的底层计算引擎,IPython核心使这些工具能够执行Python代码。

3.1.3. 使用Jupyter的好处

Jupyter项目提供的工具和环境,特别是Jupyter Notebook和JupyterLab,为科学计算、数据分析、机器学习和教育带来了诸多好处。

交互式数据探索和可视化

Jupyter使得数据科学家和研究人员能够以交互式方式探索数据、进行计算并实时查看结果。这种即时反馈对于理解数据、测试新理论和学习编程语言非常有价值。Jupyter Notebook支持包括Matplotlib、Plotly和Bokeh在内的多种数据可视化库,使得数据可视化变得简单直观。

支持多种编程语言

尽管Jupyter最初是为Python设计的,但现在它支持包括R、Julia、Scala和更多在内的40多种编程语言。这种多语言支持允许用户根据项目需求选择最适合的工具,促进了不同领域和语言之间的协作。

教育和科学研究的工具

Jupyter Notebook是一个极佳的教学工具,它允许教师创建包含实时代码、图像、视频、方程和叙述性文本的富媒体教学材料。同样,科学家和研究人员可以使用Jupyter来共享他们的研究,提供可重复的研究环境,使同行评审和合作变得更加容易。

便于共享和协作

Jupyter Notebook文件易于共享,可以通过电子邮件、GitHub和其他平台分发。此外,通过JupyterHub和Binder等工具,Jupyter项目还支持多用户协作和远程访问Notebook,进一步促进了协作研究和远程学习。