点击蓝字 · 关注我们
Jupyter Notebook是一个强大的代码实验工具。它为REPL(“读取-求值-输出”循环)提供了一个可视化的图表界面。您可以混合使用Markdown和选定的编程语言(通常是Python)。它是数据科学家和机器学习从业人员开发和实验环境的默认选择。你听说过其他使用Jupyter Notebook的方法吗?让我们来探索8种可能会让你大吃一惊的使用Jupyter Notebook的方法!
软件包开发
Jupyter Notebook可用于Python软件包开发。这里有一个包nbdev。它可以通过以下方式大大加快软件包的开发:
在GitHub页面上自动生成和发布文档
在notebook上编写测试并使用GitHub Actions设置持续集成(CI)
在PyPi和conda上自动发布
Notebook和源代码之间的双向同步——你可以使用传统的IDE进行代码编辑,然后在Jupyter看到它
该软件包由Fast.ai开发。
Web应用
通过使用开源工具,有两种方法可以将JupyterNotebook转换成web应用程序,你可以使用:
voila with ipywidgets
Mercury框架
voila将Jupyter Notebook转变为一个独立的网络应用程序。交互式小部件是通过ipywidgets包添加的。这样,voila为每个用户使用Jupyter内核启动一个Tornado应用程序。
Mercury是另一种选择。它在不改变代码的情况下将交互式小部件添加到notebook中。YAML头用于定义notebook的在线状态。它使notebook转换为网络应用程序的过程非常容易——没有必要为用户界面编写额外的代码。Mercury的其他特征包括:
内置的应用程序库,您可以将多个notebook作为网络应用程序提供服务
以HTML或PDF格式下载已执行的notebook
添加认证到notebook——只有登录用户可以看到notebook
用notebook制作文件并提供下载
用Mercury创建的用于将图像转换为草图的示例应用程序:
幻灯片
你可以用Jupyter Notebook创建幻灯片。如果您的演示文稿中有许多情节需要经常更新,那么这可能是一个救命稻草。您不需要手动执行此操作,只需执行带有幻灯片作为输出的notebook即可。用JupyterNotebook创建的演示文稿使用了reveal.js包。可以使用nbconvert或Mercury将notebook转换为幻灯片。需要在终端中调用nbconvert工具。转换命令如下:
如果您决定使用Mercury工具,那么您将需要在notebook中添加YAML配置。可以直接在您的notebook所在目录运行mercury run,Mercury将为您生成幻灯片。nbconvert和Mercury之间的重要区别在于,Mercury允许向演示文稿中添加小部件,并且甚至在演示文稿期间重新计算幻灯片。更重要的是,Mercury使得将演示文稿部署到云上变得非常容易。
当你用Jupyter Notebook构建幻灯片时,你可能会发现RISE 扩展非常有帮助。它允许您在写作过程中预览幻灯片。
书籍
你可以用Jupyter Notebook创建书籍!有一个叫做jupyter-book的开源工具,用于构建出版质量的图书和在线文档。书可以作为在线网站出版,也可以导出为PDF文件。这是一个完美的用于出版计算材料的工具。您可以编写代码并在内容中包含单元格的输出。
该工具的文档也是用jupyter-book创建的,可以在jupyterbook.org上获得。
博客
你可以用Jupyter Notebook创建一个博客。当然,您可以手动完成,例如将每个notebook导出到HTML文件(使用nbconvert),然后将所有文件作为静态网站发布。但使用Nikola框架可以做得更好。它读取你的notebook并生成静态网站。这个工具是使用MITLicense开源的。它有许多主题、标签、提要、存档、注释,并且可以很容易地扩展。
报告
您可以使用Jupyter Notebook自动生成报告,这可以通过多种方式实现:
你可以使用nbconvert把你的notebook转换成PDF格式,重要的是要知道nbconvert不仅可以转换到不同的格式,如HTML,Markdown,PDF,Latex,而且可以执行notebook
你可以利用papermill执行参数化笔记本。如果您想创建多个版本的报告,它可能非常有用
你可以利用Mercury将notebook作为参数化报告共享。更重要的是,您可以安排报表的生成,并将最终报表导出为HTML或PDF文件
仪表盘
在Jupyter Notebook中,可以使用Python轻松地创建交互式仪表板。Mercury工具可以将其转换成可以在互联网上共享的网络应用程序。更重要的是,Mercury有一个可用的schedule选项,允许notebook(仪表板)在预定义的时间间隔执行。它接受带有间隔定义的类似crontab的字符串。
用于notebook调度的YAML示例:
REST API
您可以使用Jupyter Notebooks来构建REST API端点,有两个包可以使用:
Mercury 框架
Jupyter Kernel Gateway可以用来定义单个notebook中的许多端点,例如:
上面的代码将在/hello/world地址创建GET端点,在/contact创建POST端点。
Mercury可以替代Jupyter Kernel Gateway。它有不同的方法——一个notebook是一个POST端点。Notebook名是端点名称。执行期间的notebook将响应保存为JSON文件。在notebook执行之后,服务器返回响应。您可以在文档中阅读有关此方法的更多信息。
小结
Jupyter Notebook是一个强大的工具,不仅为实验,而且为软件开发。有很多东西可以用它来创造。您可以使用Jupyter Notebook来创建Web应用程序、软件包、博客、仪表板、幻灯片、REST API、书籍和报告。代码和Markdown的混合以及丰富输出的连接提供了无限的可能性。