3Jupyter notebook系列(3):魔法函数(查询,运行外部程序,计时,加载文件,变量管理调试,shell交互,图片的显示,查询环境变量,显示运行内核函数,kernel切换)

Jupyter notebook 系列

Jupyter notebook系列(1):安装与使用(安装,虚拟环境的联接使用,windows远程连接linux的jupyter)

Jupyter notebook系列(2):使用技巧(快捷键,多行输出,多光标操作,Unix系统命令的使用,查看输入输出历史,保存记录点与分享,抑制文末输出,图片输出,多环境kernel切换)

Jupyter notebook系列(3):魔法函数(查询,运行外部程序,计时,加载文件,变量管理调试,shell交互,图片的显示,查询环境变量,显示运行内核函数,kernel切换)

Jupyter notebook系列(4):插件的安装使用(代码折叠,添加目录,变量监控,代码格式化,运行时间统计,自动补全,自动保存,运行结束提醒)

Jupyter notebook系列(5):主题的安装更换(主题颜色背景,字体字号大小,工具条可见,画图风格设置)

Jupyter notebook系列(6):更高级的配置Mark(显示行号,更改工作路径,使用sudo权限)

1、魔法函数简述

Jupyter Notebook 的命令模式下,除了一般的python代码编辑外,它还支持一些其他的语言,如R、Stata等等,使用这些语言的前提是需要使用魔法函数(此处还需要在 JupyterNotebook添加R、Stata的环境变量,感兴趣的可以自行搜索教程)。

魔法函数分为两种,一种是line magics,另外一种cell magics

前者是通过在前面加%,表示只在本行有效。
后者是通过在前面加%%,表示magic在整个cell单元有效。

以经济学圈最广泛使用的 Stata 为例,如果我想在 Jupyter Notebook 中写 Stata命令的话,就可以使用%%stata这个魔法函数。事先请安装两个模块:

pip install ipystata
pip install psutil

然后就可以在Cell中一边输入代码一边看到结果了。

2、常用Magic Commands

2.1 %lsmagic:查看magic 命令

在Cell中输入%lsmagic可以看到所有的 magic 命令

2.2 %run:运行外部程序

类似spyder里的runfile(),要注意就是外部程序中定义的函数在运行之后都可以继续调用。注意不仅仅是py文件可以ipynb也可以,会把对应的输出显示出来。

外部程序如图

image-20201118095941297

运行外部程序结果如图

2.3 %%time %timeit:评估时间效率

%%time 将会给出cell的代码运行一次所花费的时间。

%timeit 的行命令来测试时间,使用Python的timeit模块,它将会执行一个语句100,000次(默认情况下),然后给出运行最快3次的平均值。

image-20201118094753070

%%timeit测算整个单元格的运行很多次的运行时间评估。

image-20201118094907025

2.4 %load:加载一个文件里面的内容

2.4.1 从本地文件中加载代码

将本地的.py文件load到jupyter的一个cell中,在需要导入该段代码的cell中输入

%load filename.py #filename.py是当前路径下的一个python文件1

image-20201118100327332

运行该cell,可以看到如下结果:

image-20201118100407299

可以看到,运行后,%load filename.py被自动加入了注释符号#,test_jupyter.py中的所有代码都被load到了当前的cell中

2.4.2 从网络load代码到jupyter

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

下面给出一个例子,导入matplotlib中的一个小例子color example code

image-20201118100813469

运行后

image-20201118100829289

2.5 %whos %reset %who:变量管理

%whos 查看当前变量,类型,信息

%reset 清除变量

%who 不带参数的%who命令将会列出全局范围内存在的所有变量。如果传入参数,比如str,将会列出指定类型的所有变量。

前面定义的变量就已经全部被清除了

image-20201118102903150

2.6 %pdb:调试

使用 Magic 命令 %pdb 开启交互式调试器。出错时,你能检查当前命名空间中的变量。

使用两次%pdb控制打开关闭

在提示符中输入 q 即可退出调试器。

这里写图片描述

image-20201118103155961

2.7 %pwd %cd %ls:魔法函数与shell的交互

很多指令甚至不需要%也可以

%cp复制文件

%pwd和linux一样,查找当前目录。current working directory即当前运行的代码所在的路径,具体方法:current_path = %pwd这样得到的current_path就是当前工作路径的字符串

image-20201118140242655

%cd 更改当前目录

%ls

image-20201118101827109

2.8 %matplotlib:画图显示 嵌入可视化内容

使用matplotlib画图时,有时是弹不出图像框的,是因为在默认情况下,图形呈现在各自的窗口中。像这个样子

但是,可以向命令传递参数,以选择特定的“后端”(呈现图像的软件)。可以使用 %matplotlib 命令将 matplotlib 设置为以交互方式在 notebook 中工作。

首先查找一下可以使用的显示后端(一般常用inline):

%matplotlib -l

直接在 notebook中呈现图形,可以在开头加入%matplotlib inline使得图片嵌入在jupyter notebook里面,如此就可以显示图相框,将图像与文本和代码一起嵌入。

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
plt.plot(np.arange(10))

image-20201118143914920

提示1:在分辨率较高的屏幕(例如 Retina 显示屏)上,notebook 中的默认图像可能会显得模糊。可以在 %matplotlib inline 之后使用 %config InlineBackend.figure_format = 'retina'来呈现分辨率较高的图像。

%matplotlib inline
%config InlineBackend.figure_format = 'retina' 
import numpy as np
import matplotlib.pyplot as plt
plt.plot(np.arange(10))

提示2:指定%config InlineBackend.figure_format = 'svg',浏览器就会为你选人矢量图了

%matplotlib inline
%config InlineBackend.figure_format = 'svg'
import numpy as np
import matplotlib.pyplot as plt
plt.plot(np.arange(10))

image-20201118143643884

一些别的渲染器

  • matplotlib, 使用%matplotlib inline进行激活。
  • %matplotlib notebook提供了一些交互性,不过可能会有点慢,因为渲染由服务器端完成。(我试了一下超级慢)
  • mpld3为matplotlib代码提供了另一个渲染器(使用d3)。非常漂亮,不过尚不完备还有待发展。
  • bokeh是构建交互性绘图的一个更好的选择。
  • plot.ly也可以生成漂亮的绘图,不过是付费服务。

2.9 %%writefile:写入文件 %pycat:输出文件

后面紧接着一个file_name.py,表示在jupyter notebook里面创建一个py文件,后面cell里面的内容为py文件内容

%%writefile test_peace.py
import numpy as np
print(np.random.randint(1,5))

在当前路径下会生成一个test_peace.py的文件,内容就是cell里面的内容

Writing test_peace.py

image-20201118135744162

%pycat刚好相反,会向你展示高亮后的外部文件

image-20201118151644167

2.10 %history:查询输入历史

%history -n 1-8

表示查看1-4次的输入 冒号前面是第几次输入

2.11 %env 环境变量

image-20201118151059298

2.12 在一个Jupyter中运行多种环境或者语言或者kernel的命令语言

[译]27 个Jupyter Notebook的小提示与技巧 - Focus on ML & DM

如果想要的话,你可以将多个 kernel 的代码组合到一个 notebook 中。

在每个cell的开头使用相关的魔法命令来声明你想使用的 kernel:

image-20201118153119985

2.13 %prun:显示运行内核函数

使用%prun statement_name将会产生一个有序表格来展示在该语句中所调用的每个内部函数调用的次数,每次调用的时间与该函数累计运行的时间。

LAST、参考文献

jupyter notebook简单使用教程 - 知乎

Jupyter Notebook使用笔记(二)_y4ung-CSDN博客

Python·Jupyter Notebook各种使用方法记录·持续更新_tina的博客-CSDN博客_jupyter notebook

使用Jupyter Notebook的12个小技巧 - 知乎

jupyter notebook之IPython输入输出历史—初学_直心I-CSDN博客

[译]27 个Jupyter Notebook的小提示与技巧 - Focus on ML & DM

jupyter入门 - 简书

Jupyter Notebook 常用魔法命令_u011213419的博客-CSDN博客_jupyter魔法命令

LAST and Not Read、一些补充参考资料

[The cell magics in IPython](http://nbviewer.jupyter.org/github/ipython/ipython/blob/1.x/examples/notebooks/Cell Magics.ipynb#The-cell-magics-in-IPython)

Built-in magic commands — IPython 7.19.0 documentation

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值