欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Jupyter Notebook

程序员文章站 2022-07-14 12:35:42
...

介绍

Jupyter Notebook, 以前又称为IPython notebook,是一个交互式笔记本, 支持运行40+种编程语言. 可以用来编写漂亮的交互式文档;

你要向别人解释你的程序, 你可能要新建一个word, 把代码复制进去, 对每块代码进行讲解. 这样会有几个问题:

 1) 代码格式不好看; 
 2) 代码的配色丢失; 
 3) 代码与文字解释部分区分不明显;

使用Jupyter Notebook, 可以让代码保持其在编辑器里面的格式, 看起来很正规. 而且, 复制进去的代码是可以运行的. 敲击完代码之后, 按Shift+Enter, 或者上面的Run Cell键变可以得到代码运行结果. 这里, 写Notebook时候, 都是以cell为基本单位的, cell有几种类型: 如code, markdown, heading等. 如果设置为code类型, 里面的内容就是可以运行的; heading类型的cell可以帮助我们设置标题(一级,二级,三级等标题), markdown类型的cell可以使我们用markdown的语法来编辑文本.

官方文档地址

https://jupyter-notebook.readthedocs.io/en/stable/index.html

安装

Anaconda中自带Jupyter notebook,因为我们之前已经安装了Anaconda,所以可以直接使用Jupyter notebook;

启动

终端输入:
jupyter notebook

说明:
如果您的Anaconda已经配置了环境变量,则上面的启动命令在任意目录下执行均可;如果您的Anaconda尚未配置环境变量,则您既可以配置其环境变量也可以切换到jupyter notebook所在的目录,然后启动它;

启动后,如图:

Jupyter Notebook

单击右上角“New” ,选择“Python3”,新建一个notebook文件,如图:

Jupyter Notebook

接下来,就可以直接编写代码了,点击运行,如图:

Jupyter Notebook

左侧的In[number]中的number为步数,ipython是交互式的,随时更改代码后,可以实时查看执行结果;

编写一个新的cell,并运行,如图:

Jupyter Notebook

每个cell都不是独立的代码片,每个cell之间按时间创建的顺序存在依赖关系;
cell的类型可以是code,markdown,raw NBConvert;
重命名该jupyter notebook
File–→Rename
下载该jupyter notebook文件到本地
File–→Download as—>Notebook(.ipynb)
将该jupyter notebook文件上传到github

步骤:
mkdir /root/zhangjian/jupyter_notebook
mv /root/zhangjian/jupyter_notebook_demo.ipynb /root/zhangjian/jupyter_notebook
cd /root/zhangjian/jupyter_notebook
git init
git add jupyter_notebook_demo.ipynb
git commit -m ‘jupyter_notebook_demo’
git remote add origin “aaa@qq.com:yanniData/test2.git”
git pull origin master
git push origin master

查看上传结果:

Jupyter Notebook

上传成功;
在github中打开jupyter notebook file,如图:

Jupyter Notebook

发现,github自动解析并渲染了jupyter notebook文件;
现在,将该jupyter notebook文件clone到本地,然后用jupyter notebook 打开;

git clone -b master “aaa@qq.com:yanniData/test2.git”
Jupyter Notebook

默认clone到当前目录;
在jupyter notebook的浏览器页面中选择:
File—>Open:
打开刚clone到本地的jupyter notebook文件,显示正常,如图:
Jupyter Notebook

总结:
用jupyter notebook生成的文件存储到github上,然后从github上clone到本地,再用jupyter notebook打开,任何浏览器都可以,数据以json串的形式存储在ipynb格式的文件中;

Pycharm编写Jupyter notebook

我们除了在终端中启动Jupyter notebook并在浏览器内编写Jupyter notebook文件,也可以在Pycharm中编写,这种方式的好处是Pycharm中编写Jupyter notebook相比在浏览器中编写,代码提示更加友好,方便开发,但缺点是jupyter notebook的图形化显示结果是基于浏览器的,即在Pycharm编写一段代码后想查看运行结果仍然要借助浏览器,这样就要来回地切换,不大方便;

我们直接在Pycharm中编写完Jupyter notebook文件后,使用Pycharm集成的Git及Github功能,直接将其提交到Github上,后续如果想查看并编辑该文件,可以直接使用Pycharm从Github上clone下来,并直接在Pycharm中编辑,这样的好处是,并实现一站式操作,既不用在浏览器中操作,也不用手动编写git命令,很方便,但不方便的是在pycharm中编辑jupyter notebook文件时,要频繁地在浏览器和IDE之间切换,以便实时查看运行结果;

综上所述,个人认为在浏览器中编写jupyter notebook更方便,编写完后,保存到本地,并使用git的 相关命令 push到github上;后续使用git的相关命令将github上的jupyter notebook文件clone到本地,然后在jupyter notebook的浏览器页面中open并edit等;

更改jupter notebook的工作空间

  • 方法一(推荐,只需在目标目录下启动jupyter notebook即可达到更改工作空间的目的,灵活方便):
    1. cd 到我们想让其成为jupyter notebook的工作空间的目录
    2. 终端中启动jupyter notebook,即:jupyter notebook,即可;
  • 方法二(不推荐,因为每次修改工作空间就要修改配置文件,不灵活):

    1. 查找jupyter notebook的配置文件的路径(jupyter notebook默认不允许以root用户的身份启动,加上—allow-root选项即可了)
      jupyter notebook –allow-root –generate-config,如图:
      Jupyter Notebook

    2. 编辑jupyter notebook的配置文件,修改配置项:
      c.NotebookApp.notebook_dir = u’define_workspace_path’
      黄色字体即为我们要指定的工作空间路径;

Jupyter的各种快捷键

执行当前cell,并自动跳到下一个cell:Shift Enter
执行当前cell,执行后不自动调转到下一个cell:Ctrl-Enter
是当前的cell进入编辑模式:Enter
退出当前cell的编辑模式:Esc
删除当前的cell:双D
为当前的cell加入line number:单L
将当前的cell转化为具有一级标题的maskdown:单1
将当前的cell转化为具有二级标题的maskdown:单2
将当前的cell转化为具有三级标题的maskdown:单3
为一行或者多行添加/取消注释:Crtl /
撤销对某个cell的删除:z
浏览器的各个Tab之间切换:Crtl PgUp和Crtl PgDn
快速跳转到首个cell:Crtl Home
快速跳转到最后一个cell:Crtl End

jupyter notebook password问题(可选项)

https://jupyter-notebook.readthedocs.io/en/stable/public_server.html

Jupyter notebook 代码导入

将本地的.py文件load到jupyter的一个cell中

  1. 在cell中输入:%load python_file_path,如图:
    Jupyter Notebook
  2. 点击运行,就将本地文件加载到cell中了,如图:
    Jupyter Notebook
    可以看到,运行后,%load /home/zhangjian/demo1.py被自动加入了注释符号#,demo1.py中的所有代码都被load到了当前的cell中

从网络load代码到jupyter
在cell中输入%load http://…..,然后运行该cell,就会将load后面所对应地址的代码load到当前的cell中;

Jupyter 运行python文件
利用jupyter的cell是可以运行python文件的,即在cell中输入:%run python_file_path
如图:
Jupyter Notebook
%run /home/zhangjian/demo1.py
点击运行,执行结果:
Jupyter Notebook

在jupyter的cell中执行linux command
具体方法为:在linux command前面加入一个感叹号” !“,

如图:

Jupyter Notebook

获取current working directory

即当前运行的代码所在的路径
具体方法:current_path = %pwd
这样得到的current_path就是当前工作路径的字符串

如图:
Jupyter Notebook

在Jupyter Notebook中使用Matplotlib绘图

在Jupyter Notebook中使用Matplotlib绘图时,有时是不弹出图像框的,我们可以在代码开头加上:%matplotlib inline
Jupyter中使用Markdown
1. 点击”New“按钮,选择”python3“,新建一个notebook文件
2. file type下拉框选择”Markdown“
3. 在cell中使用Markdown语法进行编写

Markdown语法:
http://blog.leanote.com/post/freewalk/Markdown-%E8%AF%AD%E6%B3%95%E6%89%8B%E5%86%8C

在jupyter中设置link

前提:将file type设置为”Markdown“

  1. 添加链接文本
    [第一节]#(lable1)
    黄色字体为linked text,id的值:label1用来关联linked text和<a>标签;
    如图:
    Jupyter Notebook

  2. 添加<a>标签

<a id=”label1”></a>
<a>标签用来定义链接文本所跳向的位置,即<a>标签的位置即我们在点击链接文本后所跳向的位置;

如图:
Jupyter Notebook
其中,两个<a>标签用来定义两个不同的链接位置;

运行效果:
Jupyter Notebook

Jupyter Notebook 中的错误异常与代码调试

在 jupyter notebooke 中执行%xmode Plain可以设置为当异常发生时只展示简单的异常信息;

恢复为显示完整的异常信息执行%xmode Verbose;

在错误异常发生时,我们可以执行%debug来进行代码调试,执行%debug将进入直接出错函数xxx_func的调试模式,我们可以在调试模式自带的对话框中输入变量名来查看函数中的变量情况,输入“quit”则退出该模式。