什么是Jupyter Notebook? 数据分析变得更加容易
在某个时候,我们所有人都需要展示我们的工作。 大多数编程工作都作为原始源代码或作为编译的可执行文件共享。 源代码提供了完整的信息,但是以一种“讲”而不是“显示”的方式。 该可执行文件向我们展示了该软件的功能,但是即使附带了源代码,也可能很难准确掌握其工作方式。
想像一下能够查看代码并在同一UI中执行代码,以便您可以对代码进行更改并立即实时查看这些更改的结果? 这就是Jupyter Notebook提供的功能。
[InfoWorld的要点: 开始使用Anaconda,这是数据科学的Python发行版 。 • Python的Anaconda发行版中的新增功能 。 • 5个用于数据科学的基本Python工具-现已改进 。 | 通过InfoWorld的App Dev Report新闻通讯了解编程方面的热门话题。 ]
创建Jupyter Notebook的目的是使其更易于显示一个人的编程工作,并使其他人参与其中。Jupyter Notebook允许您将代码,注释,多媒体和可视化结合在一个可以共享的交互式文档(自然称为Notebook)中。 ,重复使用和重新设计。
而且由于Jupyter Notebook通过Web浏览器运行,因此该笔记本本身可以托管在本地计算机或远程服务器上。
具有文本,代码和可视化效果的Jupyter笔记本。 更改代码并在浏览器中实时运行它会更改输出,并将新结果保存到新笔记本中。
Jupyter Notebook的好处
Jupyter Notebook最初是为用Python,R和Julia编写的数据科学应用程序而开发的,它以各种方式对各种项目有用:
- 数据可视化。 大多数人都是通过数据可视化来首次接触Jupyter Notebook的,这是一个共享的笔记本,其中包含一些数据集的图形显示。 Jupyter Notebook使您可以创作可视化,但也可以共享可视化,并允许对共享的代码和数据集进行交互式更改。
- 代码共享。 像GitHub和Pastebin这样的云服务提供了共享代码的方法,但是它们基本上是非交互的。 使用Jupyter Notebook,您可以直接在Web浏览器中查看,执行代码并显示结果。
- 与代码的实时交互。 Jupyter Notebook代码不是静态的。 可以实时编辑和重新运行它,并直接在浏览器中提供反馈。 笔记本还可以嵌入可用作代码输入源的用户控件(例如,滑块或文本输入字段)。
- 记录代码示例。 如果您有一段代码,并且想逐行解释它的工作方式,并且一直都有实时反馈,则可以将其嵌入Jupyter Notebook。 最重要的是,该代码将保持完整的功能-您可以在说明,显示和讲述的同时添加交互性。
Jupyter Notebook组件
Jupyter笔记本可以包含多种成分,每种成分被组织为离散的块:
- 文字和HTML。 可以在任何时候将纯文本或用Markdown语法注释的文本生成HTML。 CSS样式也可以内联或添加到用于生成笔记本的模板中。
- 代码和输出。 尽管您可以在Jupyter环境中添加对其他语言(例如R或Julia)的支持,但是Jupyter Notebook笔记本中的代码通常是Python代码。 已执行代码的结果立即显示在代码块之后,并且可以按您希望的任意顺序(任意次数)执行和重新执行代码块。
- 可视化。 图形和图表可以通过Matplotlib , Plotly或Bokeh之类的模块从代码生成。 像输出一样,这些可视化内容以内联方式显示在生成它们的代码旁边。 但是,如果需要,还可以配置代码以将其写到外部文件中。
- 多媒体。 由于Jupyter Notebook基于Web技术构建,因此它可以显示Web页中支持的所有类型的多媒体。 您可以将它们作为HTML元素包含在笔记本中,也可以通过
IPython.display
模块以编程方式生成它们。 - 数据。 数据可以和构成Jupyter Notebook笔记本的
.ipynb
文件一起在单独的文件中提供,也可以通过编程方式导入,例如,通过在笔记本中包含代码以从公共Internet存储库下载数据或通过数据库连接。
Jupyter Notebook用例
Jupyter Notebook最常见的用例是涉及数据或公式可视化的数据科学,数学和其他研究项目。 除了这些之外,还有许多其他用例:
- 共享可视化效果,带有或不带有交互性。 人们经常将数据可视化的结果共享为静态图像,但这仅在一定程度上有用。 通过共享Jupyter笔记本,您可以让目标受众潜入并玩耍。 他们可以交互式地全面了解数据。
- 用代码记录流程。 许多通过博客撰写编程经验的程序员都在Jupyter笔记本中撰写帖子。 其他人可以下载他们的笔记本并重新创建练习。
- 库或模块的实时文档。 Python模块的大多数文档都是静态的。 Jupyter笔记本可用作交互式沙箱,用于学习模块的工作方式。 任何在笔记本界面上运行良好的Python模块(本质上是任何将
stdout
写入其行为的东西)都是一个很好的选择。 - 通常共享代码和数据。 共享Jupyter笔记本及其相关数据文件所需要做的就是将其打包到一个档案中。
JupyterLab
Jupyter Notebook的下一代用户界面称为JupyterLab,现已上市,并已考虑用于生产。
正如在宣布全面可用性的博客文章中所解释的那样,JupyterLab比传统的Jupyter笔记本更具延展性,允许用户在笔记本内和笔记本之间拖放单元格,并将工作区安排到单独的选项卡和小节中。 代码可以直接从文本文件以及Jupyter Notebook文件运行,并且可以使用实时预览呈现代码和数据的许多常见文件格式。
JupyterLab还可以通过扩展名进行定制,以增加对新文件格式的支持,丰富的界面或提供许多其他附加功能,从而实现比Jupyter Notebook更广泛的笔记本应用程序。 长期计划是用JupyterLab替换当前的Jupyter Notebook接口,但前提是必须证明JupyterLab足够稳定和可靠。
JupyterLab是Jupyter Notebook的完全重新设计的前端。 除了在安排工作空间方面提供更大的灵活性之外,还可通过扩展自定义JupyterLab。
Jupyter Notebook的局限性
尽管Jupyter Notebook既强大又有用,但确实存在一些需要考虑的限制。
- 笔记本不是独立的。 这是使用Jupyter Notebook的最大缺点:笔记本需要Jupyter运行时以及计划使用的所有库。 存在一些用于创建独立的Jupyter笔记本的策略,但是没有一个得到官方支持。 最好将笔记本分发给已经拥有运行它们的基础结构的人,或者不介意设置(例如通过Anaconda进行安装)。
- 会话状态无法轻松保存。 Jupyter Notebook的默认工具集无法保留和还原在Jupyter Notebook中运行的任何代码的状态。 每次加载笔记本时,都需要重新运行其中的代码以恢复其状态。
- 没有交互式调试或其他IDE功能。 Jupyter Notebook不是一个成熟的Python开发环境。 您期望在IDE中找到的许多功能(如交互式调试,代码完成和模块管理)在此处不可用。
From: https://www.infoworld.com/article/3347406/what-is-jupyter-notebook-data-analysis-made-easier.html