Jupyter Notebook包含一写特殊的命令,我们称之为魔术命令。
正如它的名字,魔术命令是一个特殊的命令。魔术命令通过将%符号与要运行的命令一起使用来工作。
魔术命令有很多种,但在本文中我只展示最常用的9个魔术命令。让我们开始吧。
%who
它将显示您在jupiter Notebook环境中拥有的所有可用变量。让我在下面展示一个例子。
importseabornassnsdf=sns.load_dataset('mpg') a='simple'b=2
我们创建了3个不同的变量;df, a,和b。如果您在您的Jupyter Notebook单元格中键入%who,它将显示所有现有的变量。
我们可以看到我们拥有所有的变量,包括环境中预先存在的变量。
如果您想要查看特定的变量,比如只查看str变量,该怎么办?它是很容易的。您需要在魔术命令之后输入对象类型。在本例中,它是%who str。
%timeit
这个命令很有趣。它通过多次运行来评估代码的执行速度,并产生执行时间的平均+标准偏差。让我们举个例子。
importnumpyasnp%timeitnp.random.normal(size=1000)
使用%timeit 魔术命令,我们知道每个执行时间的执行时间只会偏差341ns左右。
当您想要确定代码执行和循环过程的稳定性时,这个命令非常有用。
%store
如果你在一个笔记本上做一个项目,而你想在另一个笔记本上传递你的变量,那该怎么办呢?您不需要pickle它或将它保存在某个目标文件中。您需要的是使用%store 魔术命令。
这是我们以前的Jupyter Notebook与' df '变量包含mpg数据帧。接下来,我想把这个“df”变量移动到另一个笔记本上。我只需要键入%store df。
“df”变量现在存储在Jupyter Notebook和准备在不同的Jupyter Notebook中共享使用。让我们尝试创建一个新的笔记本,并输入%store -r df。
我们的“df”变量已经转移到另一个笔记本上,准备用于另一个分析。关于%store 魔术命令的另一个好处在于,您可以删除记事本中的变量,而您仍然可以在%store 魔术命令中存储变量。
%prun
另一个与时间有关的魔术命令。%prun用于计算函数或程序执行每个函数需要多长时间。
%prun的惊人之处在于,它显示了一个列表,列表中其中可以看到语句中每个内部函数被调用的次数、每次调用的时间以及函数所有运行的累积时间。
让我们通过一个示例来运行%prun 魔术命令。
如上图所示,我们可以看到每个函数在语句中的执行时间,以及它们的执行时间加上累积时间。
%history or %hist
当你花了很多时间做分析后,你想知道你做过什么以及你目前的状况,或者有时候你不得不在单元格之间来回跳转以运行函数时,你会不会经常忘记历史的操作?
在这种情况下,我们可以使用%history 魔术命令查看您的活动日志,并跟踪您已经做了什么。
尝试在jupiter notebook单元格中运行%history,看看输出是什么。
%pinfo
当处理一个新的对象或包时,您希望获得所有的详细信息。如果你是像我一样懒,那么我们可以使用魔法命令%pinfo 得到所有的详细信息。
让我们尝试使用之前的DataFrame对象运行这个魔术命令。
使用这个神奇的命令,我们可以看到关于对象的所有信息和我们可以使用的所有参数。
%%writefile
对于开发和生产环境来说,jupiter Notebook并不是最好的IDE,但这并不意味着我们不能在jupiter单元中做到这一点。
如果您已经编写了可以复用的函数,并希望将其保存在python文件中,该怎么办呢?当然,您可以打开另一个IDE并复制粘贴该文件,但是有一种更简单的方法可以做到这一点。我们可以使用神奇的命令%%writefile来达到同样的结果。
让我们尝试运行以下代码。
%%writefiletest.pydefnumber_awesome(x): return9
检查当前目录;现在应该有一个新的Python文件。
%pycat
如果您想采用另一种方式,比如将Python文件读取到您的jupiter notebook中,该怎么办?您也可以使用%pycat 魔术命令来实现这一点。
让我们尝试阅读我们之前的Python文件。
一个新的弹出窗口将显示Python文件中的所有代码。
当您希望在jupiter Notebook中使用许多生产和开发代码时,这个神奇的命令非常有用。
%quickref
最后一个魔法命令是%quickref。为什么这是应该知道的魔法命令?因为这个魔法命令详细解释了Jupyter Notebook中存在的所有魔法命令。
我们试着在你的笔记本上运行一下。
就像这样,现在您将看到您可以使用的每个魔法命令的所有解释。那是多么有用啊!
总结
魔术命令是一种特殊的命令,在Jupyter Notebook它可以帮助我们以提高我们的日常开发效率,作为一个数据科学家。我认为这9个魔法命令是必须知道的。