五个Jupyter Notebook实用魔法命令分享
作者:databook
Jupyter Notebook
是一个开源的交互式编程环境,用于创建和共享包含实时代码、文本、图像和可视化输出的文档。
它交互式的编程方式是一大亮点,因为我们在数据分析的过程中,常常是一边分析,一边看分析结果,根据分析结果再调整数据或者分析参数。
有了 Jupyter Notebook
,代码和运行结果可以一起展示,省了很多来回切换的麻烦操作。
此外,它是基于Web的应用程序,所以展示运行结果的方式很丰富,不仅仅是文字,图表等也一样可以展示。
Jupyter Notebook
不仅仅支持python
语言,还支持其他几种常用于数据分析的语言,比如 Julia
,R
等等。
介绍如何使用Jupyter Notebook
编程和写文档的文章很多,本篇主要介绍几个使用Jupyter Notebook
时常用的几个魔法命令。
这些魔法命令主要提供一些额外的功能和控制Notebook
环境的行为。
1. 文件和路径
查看当前路径:
%pwd #运行结果(环境不一样,下面的路径会不一样): 'd:\\projects\\python\\notebooks'
魔法命令的结果还可以存储到python
变量中。
cur_path = %pwd print(cur_path) #运行结果: 'd:\\projects\\python\\notebooks'
列出当前文件夹下的文件:
%ls
这个命令在不同的系统中会自动调用不同的命令,
比如在Linux
系统中,调用ls
命令,在Windows
系统中,会调用 dir
命令。
2. 自动保存
随时保存自己的代码和文档是好习惯,如果怕忘了保存,也可以设置Jupyter Notebook
的自动保存时间。
比如:
%autosave 10 #运行结果 Autosaving every 10 seconds
每隔10秒会自动保存一次。
3. 查看历史
查看执行过的历史命令,这里不仅仅是历史执行的魔法命令,也包括执行过的python
代码。
%history
通过复制历史命令,我们再次执行之前的命令或代码时,不用再输入一遍。
如果历史命令太多,也可以指定只显示最近的N
条命令:
%history -l 3 #只显示最近3条命令
4. 性能检测
数据分析时,经常接触到数量庞大的数据。
编写分析代码处理庞大的数据时遇到性能问题是常事,Jupyter Notebook
有两个魔法命令可以帮助我们定位性能问题。
第一个是 %time
,能够显示函数运行时间的相关信息:
def sum(n): s = 0 for i in range(n): s += i return s %time sum(100000) %time sum(200000) #运行结果 CPU times: total: 93.8 ms Wall time: 87.9 ms CPU times: total: 172 ms Wall time: 168 ms
其中,
CPU time
是程序在处理器上实际运行的时间Wall time
是程序从开始执行到结束所花费的时间(包括了等待资源、I/O 操作等与CPU 时间无关的时间)
上面的示例中,第二次的运算量是第一个的两倍,耗费的时间也差不多是两倍。
除了 %time
,还有一个 %timeit
命令,
它会统计多次运行后的结果,得到的结果更加可靠一些。
def sum(n): s = 0 for i in range(n): s += i return s %timeit sum(1000000) #运行结果 63.9 ms ± 2.97 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
运行结果的含义如下:
63.9 ms
是运行时间的平均值2.97 ms
是标准差,也就是运行时间的上下浮动范围7 runs
表示一共运行了7
轮10 loops each
表示每轮循环运行了10
次
%timeit
运行多少轮,以及每轮运行多少次是可以设置的。
def sum(n): s = 0 for i in range(n): s += i return s %timeit -n 20 -r 10 sum(1000000) #运行结果 66.7 ms ± 4.75 ms per loop (mean ± std. dev. of 10 runs, 20 loops each)
-r
参数指定运行多少轮,-n
参数指定每轮运行多少次。
5. 绘图相关
最后,介绍在Jupyter Notebook
中使用matplotlib
绘图时用到的魔法命令。
5.1. 直接显示
%matplotlib inline
,直接显示在代码的下方,这也是最常用的方式。
import matplotlib.pyplot as plt import numpy as np %matplotlib inline x = np.arange(0, 10, 1) y = x*x + 2 plt.plot(x, y) plt.show()
5.2. 使用 TK 绘制
%matplotlib tk
,会弹出新的窗口显示图形,并且图形可以交互。
import matplotlib.pyplot as plt import numpy as np %matplotlib tk x = np.arange(0, 10, 1) y = x*x + 2 plt.plot(x, y) plt.show()
红色框标出的就是交互的按钮。
5.3. 使用 notebook 绘制
%matplotlib notebook
和使用tk
是类似的,只是不弹出新的窗口。
import matplotlib.pyplot as plt import numpy as np %matplotlib notebook x = np.arange(0, 10, 1) y = x*x + 2 plt.plot(x, y) plt.show()
这种方式同样是可以交互的。
到此这篇关于五个Jupyter Notebook实用魔法命令分享的文章就介绍到这了,更多相关Jupyter Notebook魔法命令内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!