前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >1个不为人知的 Jupyter notebook 使用技巧,今天分享出来。

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

作者头像
快学Python
发布2021-12-21 17:36:40
7950
发布2021-12-21 17:36:40
举报
文章被收录于专栏:快学Python快学Python
大家好,我是小五🧐

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

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

正文开始~

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

默认输出

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

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

代码语言:javascript
复制
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 的工作方式。

代码语言:javascript
复制
from IPython.core.interactiveshell import InteractiveShell 
InteractiveShell.ast_node_interactivity = "last_expr_or_assign"

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

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

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

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

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

是不是很方便~

其实除了“last_expr_or_assign”选项之外,我们还可以尝试其他选项。

代码语言:javascript
复制
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后,

代码语言:javascript
复制
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"

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

一劳永逸

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

代码语言:javascript
复制
from IPython.core.interactiveshell import InteractiveShell 
InteractiveShell.ast_node_interactivity = "last_expr_or_assign"

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

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

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

代码语言:javascript
复制
c = get_config()
c.InteractiveShell.ast_node_interactivity = "last_expr_or_assign"

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

抑制输出

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

啊这。。。

要不你再改回去?

算了,还有个方法,

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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-12-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 快学Python 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 默认输出
  • 更改默认输出
  • 一劳永逸
  • 抑制输出
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档