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

小詹学Python

共 2545字,需浏览 6分钟

 · 2021-11-30

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()

读取数据集data后,默认情况下 DataFrame 并不会输出数据。我们通常会再写一遍变量名df预览数据,或者使用head()方法检查其前五行。

但是当我们进行大量数据处理时,就需要每执行一个操作(替换、运算、转换、拼接等等),就要单独写一个df.headdf检查新的 DataFrame 对象。

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

更改默认输出

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

from IPython.core.interactiveshell import InteractiveShell 
InteractiveShell.ast_node_interactivity = "last_expr_or_assign"

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

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

如上图所示,我们不再需要运行df.head,所创建的DataFrame对象会自动显示出来供我们检查数据。

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

这样的话,我们每执行一个操作就可以直接显示操作后的 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"

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

一劳永逸

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

from IPython.core.interactiveshell import InteractiveShell 
InteractiveShell.ast_node_interactivity = "last_expr_or_assign"

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

在我们电脑的/.ipython/profile_default目录下,创建一个名为ipython_config.py的文件。

接着将下面这段代码写入ipython_config.py文件中。

c = get_config()
c.InteractiveShell.ast_node_interactivity = "last_expr_or_assign"

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

抑制输出

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

啊这。。。

要不你再改回去?

算了,还有个方法,

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

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


各位伙伴们好,詹帅本帅搭建了一个个人博客和小程序,汇集各种干货和资源,也方便大家阅读,感兴趣的小伙伴请移步小程序体验一下哦!(欢迎提建议)

推荐阅读


牛逼!Python常用数据类型的基本操作(长文系列第①篇)

牛逼!Python的判断、循环和各种表达式(长文系列第②篇)

牛逼!Python函数和文件操作(长文系列第③篇)

牛逼!Python错误、异常和模块(长文系列第④篇)


浏览 46
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报