Jupyter Notebook是现代Python的必学技术的原因:1、整合所有资源;2、交互展示;3、轻松运行他人编写的代码;4、易于调试;5、文学编程;6、数据可视化。整合所有资源是指Jupyter Notebook将开发需要的所有资源整合到了一个地方,无需切换窗口就可以轻松找到。
1、整合所有资源
在软件开发过程中,频繁地切换窗口会影响开发效率。举个例子,假设你需要切换窗口去看一些文档,再切换窗口去用另一个工具画图,不断地切换窗口就会成为影响效率的因素。使用 Jupyter 就可以彻底解决这个问题,因为它已经将开发需要的所有资源整合到了一个地方,无需切换窗口就可以轻松找到。
2、交互展示
Jupyter Notebook 由 Cell 模块构成,Cell 分为 Code 和 Markdown,其中 :
- Code Cell 可以独立编写、运行代码,并单独反馈结果,方便试错和验证结果,对于学习数据分析、入门数据科学或者编程语言的初学者来说,这种交互形式非常友好。
- Markdown Cell 可撰写文档,展示图片、表格、链接、公式等丰富的内容,可读性强、学习成本低,一个文档就可以涵盖课程章节的理论知识点+编程实战+可视化结果,将课程知识点完整表达,适合教学展示、课堂交互、数字化培训等。
Jupyter Notebook 本质是开源的 Web 应用,文档可以被轻松创建和共享。在团队协作时,代码、叙述文本、可视化结果结合可以清晰地表述出完整的分析过程,轻易地与他人分享研究思路、复现研究成果,团队之间迅速建立有效沟通,极大地提高协作研究效率。
3、轻松运行他人编写的代码
还是在机器学习和数学分析领域,我们可能会借鉴他人分享的代码,如果拷贝过来的代码需要使用 pip 安装一大堆依赖库才能运行,就非常让人抓狂,而 Jupyter Notebook 可以解决此类问题。
Jupyter 官方的 Binder 平台以及 Google 提供的 Google Colab 环境,可以让 Jupyter Notebook 变得和 Google Doc 在线文档一样。比如用 Binder 打开一份 GitHub 上的 Jupyter Notebook 时,就不需要安装任何 Python 库,直接打开代码就能运行。
4、易于调试
在数据研究中,如果需要调用深度学习模型来测试功能时,模型往往几百M甚至几个G,将模型全部加载到内存里需要耗费大量时间。当加载模型确定无误,只需调试调用模型预测数据时:
如果用 IDE,每加一行代码或每改一个参数都会花费大量时间重新加载模型。如果用 Jupyter Notebook,运行一遍代码以后变量占用的内存不会自动释放。模型加载的所有数据都在内存里,不覆盖变量就不需要重跑 ,因此只需将代码分段执行,灵活调整参数。
5、文学编程
文学编程的思想强调人的思维逻辑的可读性,即在对阅读者友好的文本中插入代码块,让学习进程和探索进程变得可记录可回溯,不断累积知识,获得增量式进步。这种形式非常适合研究性、探索性工作。
想象一下,当你需要做数据处理、分析建模、观察结果时:如果是在终端运行程序,包含函数和类的脚本存在其他文档,可视化结果在不同窗口显示,此时还需要写一份囊括全部的说明文档记录分析思路、程序运行、结果呈现……整个研究过程杂乱无章,无法专注于研究本身。
如果是用 Jupyter Notebook 进行分析,代码、可视化结果、说明文档都留存在同一页面中,整个分析过程和研究思路变得异常清晰。
6、数据可视化
Jupyter Notebook集成了众多数据可视化库,可以通过代码实现直观和美观的数据可视化。以下是一些常用的数据可视化库:
- Matplotlib:Matplotlib是Python的绘图库,可以创建各种静态、动态、交互式的图表、图形和动画。它支持多种图形类型,包括线图、条形图、散点图、饼图等。
- Seaborn:Seaborn是基于Matplotlib的Python可视化库,提供了更高级的绘图功能和更美观的图形界面。使用Seaborn可以轻松地创建热力图、分布图等高级图表。
- Bokeh:Bokeh是Python的交互式可视化库,可以创建各种动态和交互式的图表和应用程序。它支持多种图形类型,包括折线图、散点图、条形图、地图等。
- Plotly:Plotly是一个基于Web的数据可视化库,支持多种编程语言,包括Python、R、JavaScript等。它提供了多种交互式图表类型,如散点图、折线图、条形图、桑基图等。
延伸阅读1:Jupyter Notebook是什么
Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言。Jupyter Notebook 的本质是一个 Web 应用程序,便于创建和共享程序文档,支持实时代码,数学方程,可视化和 markdown。 用途包括:数据清理和转换,数值模拟,统计建模,机器学习等等。