原文转载:https://zhuanlan.zhihu.com/p/33105153
https://blog.csdn.net/guleileo/article/details/80490921
一、运行jupyter notebook
0、获取帮助
如果你有任何jupyter notebook命令的疑问,可以考虑查看官方帮助文档,命令如下:
jupyter notebook --help
或
jupyter notebook -h
1. 启动
① 默认端口启动
在终端中输入以下命令:
jupyter notebook
执行命令后,会在终端显示一系列的notebook的服务信息,同时浏览器会打开自动启动jupyter notebook
启动过程中终端会显示如下内容:
C:Users24414>jupyter notebook [I 11:12:47.948 NotebookApp] Serving notebooks from local directory: C:Users24414 [I 11:12:47.948 NotebookApp] 0 active kernels [I 11:12:47.948 NotebookApp] The Jupyter Notebook is running at: http://localhost:8888/?token=6a17980cd4bfa0af7be412e76afdc190da6a16b38bbfb67c [I 11:12:47.949 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). [C 11:12:47.957 NotebookApp] Copy/paste this URL into your browser when you connect for the first time, to login with a token: http://localhost:8888/?token=6a17980cd4bfa0af7be412e76afdc190da6a16b38bbfb67c [I 11:12:48.185 NotebookApp] Accepting one-time-token-authenticated connection from ::1
- 注意:之后在Jupyter Notebook的所有操作,都请保持终端不要关闭,因为一旦关闭终端,就会断开与本地服务器的链接,你将无法在Jupyter Notebook中进行其他操作啦。
浏览器地址栏中默认地将会显示:http://localhost:8888
。其中,“localhost”指的是本机,“8888”则是端口号。
如果你同时启动了多个Jupyter Notebook,由于默认端口“8888”被占用,因此地址栏中的数字将从“8888”起,每多启动一个Jupyter Notebook数字就加1,如“8889”、“8890”
② 指定端口启动
如果你想自定义端口号来启动Jupyter Notebook,可以在终端中输入以下命令:
jupyter notebook --port <port_number>
其中,“<port_number>”是自定义端口号,直接以数字的形式写在命令当中,数字两边不加尖括号“<>”。如:jupyter notebook --port 9999
,即在端口号为“9999”的服务器启动Jupyter Notebook。
③ 启动服务器但不打开浏览器
如果你只是想启动Jupyter Notebook的服务器但不打算立刻进入到主页面,那么就无需立刻启动浏览器。在终端中输入:
jupyter notebook --no-browser
此时,将会在终端显示启动的服务器信息,并在服务器启动之后,显示出打开浏览器页面的链接。当你需要启动浏览器页面时,只需要复制链接,并粘贴在浏览器的地址栏中,轻按回车变转到了你的Jupyter Notebook页面。
2、主页面
① 主页面内容
当执行完启动命令之后,浏览器将会进入到Notebook的主页面,如下图所示。展示内容为你的电脑:C:Users<username>路径下的文件,对于我的电脑路径为C:Users24414
② 设置Jupyter Notebook文件存放位置
如果你不想把今后在Jupyter Notebook中编写的所有文档都直接保存在家目录下,那你需要修改Jupyter Notebook的文件存放路径。
首先我们创建一个文件夹,记住文件路径。例如我在路径:E:jupyter_file 创建了一个jupyter_file的文件夹
然后修改默认存储路径:
- 菜单中打开Anaconda Prompt,
- 输入命令 jupyter notebook --generate-config
- 根据上面运行处的路径打开C:Users24414.jupyter文件(只有执行上一步后才会生成jupyter_notebook_config.py文件)
- 找到#c.NotebookApp.notebook_dir = '',去掉该行前面的“#”,在打算存放文件的位置先新建一个文件夹(很重要),然后将新的路径设置在单引号中,保存配置文件
- 在开始菜单找到“Jupyte Notebook”快捷键,鼠标右击 -- 更多 -- 打开文件位置
- 找到对应的“Jupyte Notebook”快捷键,鼠标右击 -- 属性 -- 目标,去掉后面的 "%USERPROFILE%/"(很重要),然后点击“应用”,“确定”
- 重新启动Jupyte Notebook即可,我们可以看到一个干净的主页
二、Jupyter Notebook的基本使用
1. Files页面
Notebook 打开后,你会在顶部看到三个选项卡:Files(文件),Running(运行)和 Clusters(集群)。Files 基本上列出了所有的文件,Running 显示你当前已经打开的终端和Notebooks,Clusters 由 IPython parallel 包提供,用于并行计算。
要打开一个新的 Jupyter Notebook,请单击页面右侧的“New”选项卡。在这里,你有四个选项可供选择:
⦁ Python 3
⦁ Text File (文本文件)
⦁ Folder (文件夹)
⦁ Terminal (终端)
在 "Text File" 选项中,你会得到一个空白的文档。输入你喜欢的任何字母,单词和数字。它基本上是一个文本编辑器(类似于 Ubuntu 上的应用程序)。你也可以选择一种语言(支持非常多的语言),然后用该语言来写一个脚本。你还可以查找和替换文件中的单词。
在 "Folder" 选项中, 顾名思义它的功能就是创建文件夹。你可以创建一个新文件夹来放入文件,重新命名或者删除它。
"Terminal" 的工作方式与你的 Mac 电脑或 Linux 电脑上的终端完全相同(或者 Windows 上的 cmd )。它在你的Web浏览器中支持终端会话。在这个终端中输入 python ,瞧!现在你已经可以开始写 python 脚本了。
2、我们将重点介绍 Notebooks
从“New”选项中选择 "Python 3" 选项。你会看到如下的截图:
在下拉菜单中(如上所示),你有四个选项:
-
Code - 这是你输入代码的地方
-
Markdown - 这是你输入文本的地方。你可以在运行代码后添加结论,添加注释等。
-
Raw NBConvert - 这是一个命令行工具,可将你的笔记本转换为另一种格式(如 HTML)
-
Heading - 你可以将标题添加到单独的小节并使你的 Notebook 看起来干净整洁。这个选项现在已经集成到 Markdown 选项中。添加一个“##”,以确保在你之后输入的内容将被视为标题
3、使用 Magic Functions
Jupyter NoteBook 是功能强大的Python交互IDE,深受数据分析师和算法工程师的热爱。Jupyter NoteBook 在综合使用文字、代码、图片等多种元素展示设计者的想法方面有着美妙的用户体验。而其自带的一些常用Magic Command 可以让它变得更加得心应手。
magic函数主要包含两大类,一类是行魔法(Line magic)前缀为%,一类是单元魔法(Cell magic)前缀为%%;
Line-wise 是当你想要执行一个单行命令的时候使用,而 Cell-wise 是你想要执行的命令不仅仅是一行,而是整个单元格中的整个代码块时使用
最常用的魔法函数有以下几个((注意:通常不需要输入“%”,因为通常 Automagic 是默认打开的)):
3.1、%lsmagic #打印当前可以用的魔法命令,当我们想使用一个魔法命令,而不知怎么拼写函数名时,可以使用%lsmagic来查询;
3.2、%魔法命令+?显示魔法命令的说明 Docstring
3.3、%matplotlib inline #使用matplotlib画图时,图片嵌入在jupyter notebook里面,不以单独窗口显示
3.4、%timeit 行计时 %%timeit代码块计时 #为代码执行计时
3.5、%%writefile #后面紧接着一个file_name.py,表示在jupyter notebook里面创建一个py文件,后面cell里面的内容为py文件内容
1 %%writefile test_peace.py 2 import numpy as np 3 print(np.random.randint(1,5))
在当前路径下会生成一个test_peace.py的文件,内容就是cell里面的内容
Writing test_peace.py
3.6、%pwd #和linux一样,查找当前目录
3.7、%cd #更改当前目录
%cd ../
操作起来和Linux,Unix系统的文件操作差不多
/home/hanxiaoyang/ml_jxy5/0.Teacher
3.8、%cp #复制文件
1 %cp test_peace.py test_load.py
3.9、%whos #查看当前变量,类型,信息
3.10、%reset #清除变量
1 %reset 2 >>> 3 %whos 4 Interactive namespace is empty.
前面定义的变量就已经全部被清除了
3.11、%del #清除某一个变量
3.12、%load #加载一个文件里面的内容
*4、不仅限于 Python - 在 Notebooks 中使用 R,Julia 和JavaScript
Notebooks 的魔术并不止于此。你甚至可以在 Notebooks 中使用其他语言,如 R,Julia,JavaScrip t等。我个人喜欢 R 中的 ggplot2 软件包,因此使用 Notebooks 来进行探索性数据分析非常方便。
要在 Jupyter 中启用 R,你需要 GitHub上提供的 IRKernel( R 的专用内核)。这里有一份详细的指南(地址:https://discuss.analyticsvidhya.com/t/how-to-run-r-on-jupyter-ipython-notebooks/5512),总共需要八个步骤,还有截图来引导你一步一步进行操作。
如果你是 Julia 用户,你也可以在 Jupyter Notebooks 中使用它!查看这篇详尽的文章(地址:https://discuss.analyticsvidhya.com/t/how-to-run-r-on-jupyter-ipython-notebooks/5512),它重点介绍了 Julia 用户如何学习数据科学,并包括了一章节介绍如何在 Jupyter 环境中使用 Julia。
如果你更喜欢使用 JavaScript,我推荐使用 IJavascript 内核。查看这个 GitHub 库(地址:https://github.com/n-riesco/ijavascript),它会引导你在不同操作系统上安装此内核。 请注意,你需要先安装 Node.js 和 npm 才能使用它。
*5、Jupyter Notebooks 中的交互式命令板
在开始添加小插件(widget)之前,你需要导入 widgets 包:
1 from ipywidgets import widgets
小插件的基本类型是典型的文本输入框和按钮。请参阅以下来自Dominodatalab 的示例,了解一下交互式小插件是怎么使用的:
你可以在这里(地址:https://blog.dominodatalab.com/interactive-dashboards-in-jupyter/)查看详尽的开发指南。
6、键盘快捷键——节省时间并提高效率!
快捷键是 Jupyter Notebooks 最好用的功能之一。当你想运行任何代码块时,你只需要按下Ctrl + Enter 即可。Jupyter Notebooks 提供的键盘快捷键非常多,为我们节省了大量时间。
以下是我们挑选的一些快捷键,你在开始使用 Notebooks 时会经常用到这些快捷键。我强烈建议你阅读这些内容的时候一个一个地尝试一下这些快捷键。
Jupyter Notebook 提供了两种不同的键盘输入模式 - 命令和编辑。
命令模式将键盘与 Notebook 命令绑定,并由具有蓝色左边距的带有灰色单元格边框来表示。编辑模式允许你将文本(或代码)输入活动单元格,并以绿色单元格边框表示。
使用 Esc 和 Enter 在命令和编辑模式之间跳转
一旦进入命令模式(即没有活动单元格),就可以尝试以下快捷键:
-
A 键将在选中单元格上方插入新单元格,B 键将在选中单元格下方插入一个单元格
-
要删除单元格,请连续按两次 D 键
-
要撤消已删除的单元格,请按 Z 键
-
Y 键将当前的选中单元格变成代码单元格
-
按住 Shift + 向上或向下箭头键可以选择多个单元格。在多选模式下,按 Shift + M 会合并选中的单元格
-
F 键会弹出 “查找和替换” 菜单
处于编辑模式时(在命令模式下按 Enter 键进入编辑模式),你会发现以下快捷键非常好用:
-
Ctrl + Home 转到单元格的开头
-
Ctrl + S 会保存你的工作
-
和上面提过的一样,Ctrl + Enter 将运行你的整个单元格
-
Alt + Enter 不仅会运行你的单元格,它还会在下方添加一个新的单元格
-
Ctrl + Shift + F 打开命令选项板
要查看整个键盘快捷键列表,请在命令模式下按 H 或转到 Help 菜单栏下的 Keyboard shortcuts。请经常检查这些内容,因为经常会有新的快捷键被加进来。
7、有用的 Jupyter Notebooks 扩展
扩展可以有效提高你的 Jupyter Notebooks 的生产力。安装和使用扩展的最佳工具之一是 Nbextensions。它需要两个简单的步骤来安装(也有其他方法,但我发现这是最方便的):
第1步:用 pip 来安装它:
pip install jupyter_contrib_nbextensions
第2步:安装关联的 JavaScript 和 CSS 文件:
jupyter contrib nbextension install --user
完成此操作后,你会在 Jupyter Notebook 主页顶部看到一个 Nbextensions 选项卡。这里面有很多非常棒的扩展供你使用。
要启用一个扩展,只需点击它来激活。我在下面提到了4个我认为最有用的扩展:
-
Code prettify:重新格式化和美化代码块的内容。
-
Printview:这个扩展添加了一个工具栏按钮来调用当前 Notebook 的 jupyter nbconvert,并可选择在新的浏览器标签中显示转换后的文件。
-
Scratchpad:这个扩展增加一个便捷单元格,它可以让你运行你的代码而不必修改你的 Notebook。这是一个非常方便的扩展,特别是当你想要测试你的代码,但不想在你的活动Notebook上做这件事。
-
Table of Contents (2):这个扩展可以收集你的 Notebook 中的所有标题,并将它们显示在一个浮动窗口中。
这些只是你可以使用的其中一些扩展。我强烈建议查看整个扩展列表并对它们进行测试。
8、保存和共享你的 Notebook
这是 Jupyter Notebook 中最重要和最棒的功能之一。当我需要写博客文章,但我的代码和注释都保存在 Jupyter 文件中时,我需要先将它们转换为另一种格式。请记住,这些 Notebooks 采用 json 格式,在共享它时这并不是很有帮助。我无法在电子邮件或博客上发布不同的单元格或代码块,对吧?
进入 Files 菜单,你会看到一个 Download As 选项:
你可以将你的 Notebook 保存为 7 个选项中的任何一个。最常用的是 .ipynb 文件,这样其他人就可以在自己的机器上复制代码;或者保存为 .html 文件, 这样会打开一个网页(当你想要保存嵌入在 Notebook 中的图像时,这会派上用场)。
你也可以使用 nbconvert 选项手动将你的 Notebook 转换为不同的格式,如 HTML 或 PDF。
你还可以使用 jupyterhub,它允许你在其服务器上托管 Notebooks 并与多个用户共享。许多顶尖的研究项目都使用这个功能用于协作。
*9、JupyterLab
JupyterLab 于今年 2 月推出,它允许以更灵活和更强大的方式处理项目,但使用的是和 Jupyter Notebooks 相同的组件。JupyterLab 环境与 Jupyter Notebooks 完全相同,但用户会有更高效的体验。
在 JupyterLab 中,你只需一个窗口即可安排 Notebook 的工作区域、终端、文本文件和输出!你要做的仅仅是将单元格拖放到你想要的位置。你还可以通过实时预览功能来编辑常用文件格式,如 Markdown、CSV 和 JSON,以便在实际文件中实时查看所发生的变化。
如果你想在你的机器上试用它,你可以在这里查看安装说明(地址:http://jupyterlab.readthedocs.io/en/stable/getting_started/installation.html)。 开发人员的目标是 JupyterLab 最终可以取代 Jupyter Notebooks。但是,要做到这一点还要花点时间。
10、最佳实践
虽然单独工作可能很有趣, 但大多数时候你会发现自己是在一个团队中工作。在这种情况下,遵循指导方针和最佳实践非常重要,这样可以确保你的代码和 Jupyter Notebooks 被正确标注,以便与你的团队成员保持一致。下面我列出了一些最佳实践指南,你在 Jupyter Notebooks 上工作时一定要遵循以下指南:
-
对于任何程序员来说最重要的事情之一:始终确保为代码添加合适的注释!
-
确保你有代码所需的文档。
-
考虑一个命名方案,并坚持在所有代码中使用以确保一致性。这样其他人更容易读懂你的代码。
-
无论你需要什么库,在 Notebooks 开始时导入它们(并在它们旁边添加注释,说明导入它们的目的)。
-
确保代码中行与行之间有适当间隔,不要把循环和函数放在同一行中。
-
有时候你会发现你的文件变得非常繁重。看看有没有方法隐藏你认为对于以后参考不太重要的代码。 Notebooks 看起来整洁干净, 让人赏心悦目也非常重要。
-
Matplotlib 可以很漂亮整洁地展示你的 Notebook,看看怎么使用它!
地址:http://nbviewer.jupyter.org/github/jrjohansson/scientific-python-lectures/blob/master/Lecture-4-Matplotlib.ipynb
另一个提示! 当你想创建演示文稿时,首先想到的工具是 PowerPoint 和 Google Slides。其实你的 Jupyter Notebooks 也可以创建幻灯片!还记得我说它超级灵活吗? 我一点都没有夸大。
要将你的 Notebooks 转换为幻灯片,请转到 View -> Cell Toolbar,然后单击 Slideshow。看!现在,每个代码块都在右侧显示一个 Slide Type 的下拉选项。它提供了以下 5 个选项:
好好试一试每一个选项以更好地理解它,它会改变你呈现你的代码的方式!
11、结语
请注意,这篇文章并没有详尽列出 Jupyter Notebooks 提供的所有功能。还有更多的功能等着你在使用中挖掘。和其他很多事情一样,关键在于实践。
最后分享一个 GitHub 库(地址:https://github.com/jupyter/jupyter/wiki/A-gallery-of-interesting-Jupyter-Notebooks),里面有很多有用的内容。