新知一下
海量新知
6 0 7 1 4 1 4

1个不为人知的 Jupyter notebook 使用技巧,今天分享出来。

小詹学Python | 左手Python,右手AI。 2021/11/28 14:44

Jupyter Notebook 是一个友好的 Python 编辑器,更是一款集编程和写作于一体的效率工具! 最近有个小伙伴看到我的 Jupyter Notebook截图,就问为啥你没写变量名就输出结果了呢?

嘿嘿,这时候我才发现这个技巧竟然好多人都不知道。

正文开始~

今天给大家推荐一个不为人知的Jupyter Notebook使用技巧。

默认输出

虽然平时我随手可能直接就用 Sublime Text 编辑Python文件了,但是如果涉及处理数据,还是习惯打开 Jupyter Notebook。

那我们还是以数据处理最常用的Pandas语句举例吧,如下所示。

import pandas as pd

data = {"Car": ["A""B""C""D""E""F"],

        "Color": ["Red""Yellow""Black""Green""Black""Red"],

        "Year": ["1990""1980""2003""2000""2001""2004"],

        "Rating": ["2.5""1.5""3.8""9.7""8.9""3.2"]}

df = pd.DataFrame(data)

df.head()

新知达人, 1个不为人知的 Jupyter notebook 使用技巧,今天分享出来。

读取数据集

data

后,默认情况下 DataFrame 并不会输出数据。我们通常会再写一遍变量名

df

预览数据,或者使用

head()

方法检查其前五行。

但是当我们进行大量数据处理时,就需要每执行一个操作(替换、运算、转换、拼接等等),就要单独写一个

df.head

df

检查新的 DataFrame 对象。

这真的太麻烦了,怎么提高效率呢?

更改默认输出

由于Jupyter Notebook 建立在IPython库之上,我们通过运行以下代码来更改默认输出行为。它会更改 Jupyter Notebook 所依赖的 IPython 中交互式 shell 的工作方式。

from IPython.core.interactiveshell import InteractiveShell 

InteractiveShell.ast_node_interactivity = "last_expr_or_assign"

其作用就是: 显示最后一个表达式的计算结果或赋值语句中使用的值

新知达人, 1个不为人知的 Jupyter notebook 使用技巧,今天分享出来。

在运行了这两行代码后,我们再运行前面的Pandas代码,就会发现:

新知达人, 1个不为人知的 Jupyter notebook 使用技巧,今天分享出来。

如上图所示,我们不再需要运行

df.head

,所创建的DataFrame对象会自动显示出来供我们检查数据。

换成其他操作也是一样的输出结果。

新知达人, 1个不为人知的 Jupyter notebook 使用技巧,今天分享出来。

这样的话,我们每执行一个操作就可以直接显示操作后的 DataFrame 对象。

是不是很方便~

其实除了

“last_expr_or_assign”

选项之外,我们还可以尝试其他选项。

ast_node_interactivity = Enum(['all''last''last_expr''none''last_expr_or_assign'],

                                  default_value='last_expr',

                                  help="""

        'all', 'last', 'last_expr' or 'none', 'last_expr_or_assign' specifying

        which nodes should be run interactively (displaying output from expressions).

        """

    ).tag(config=True)

比如我们将

ast_node_interactivity

设置改为all后,

from IPython.core.interactiveshell import InteractiveShell

InteractiveShell.ast_node_interactivity = "all"

就可以实现一次性输出多个结果。

新知达人, 1个不为人知的 Jupyter notebook 使用技巧,今天分享出来。

一劳永逸

但是,最喜欢偷懒的我,肯定不乐意每次新建一个 Notebook 就要输入这两行代码呀。

from IPython.core.interactiveshell import InteractiveShell 

InteractiveShell.ast_node_interactivity = "last_expr_or_assign"

所以我们可以用这个方案,一劳永逸 :

在我们电脑的

/.ipython/profile_default

目录下,创建一个名为

ipython_config.py

的文件。

新知达人, 1个不为人知的 Jupyter notebook 使用技巧,今天分享出来。

接着将下面这段代码写入

ipython_config.py

文件中。

c = get_config()

c.InteractiveShell.ast_node_interactivity = "last_expr_or_assign"

新知达人, 1个不为人知的 Jupyter notebook 使用技巧,今天分享出来。

创建该此文件后,我们再创建任何 Notebook 文件,打开之后的输出行为都被固定下来了。

抑制输出

这时候又有小伙伴会问了,我有的代码单元格不想输出咋办啊。

啊这。。。

要不你再改回去?

算了,还有个方法,

就是在你的代码后面加个分号,就能抑制输出了。

新知达人, 1个不为人知的 Jupyter notebook 使用技巧,今天分享出来。

如上图所示,当我们以分号结束时,就不会显示更多输出。



更多“开发工具”相关内容

更多“开发工具”相关内容

新知精选

更多新知精选