1個不為人知的 Jupyter notebook 使用技巧,今天分享出來。
嘿嘿,這時候我才發(fā)現(xiàn)這個技巧竟然好多人都不知道。
正文開始~
今天給大家推薦一個不為人知的Jupyter Notebook使用技巧。
默認(rèn)輸出
雖然平時我隨手可能直接就用 Sublime Text 編輯Python文件了,但是如果涉及處理數(shù)據(jù),還是習(xí)慣打開 Jupyter Notebook。
那我們還是以數(shù)據(jù)處理最常用的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()

讀取數(shù)據(jù)集data后,默認(rèn)情況下 DataFrame 并不會輸出數(shù)據(jù)。我們通常會再寫一遍變量名df預(yù)覽數(shù)據(jù),或者使用head()方法檢查其前五行。
但是當(dāng)我們進(jìn)行大量數(shù)據(jù)處理時,就需要每執(zhí)行一個操作(替換、運(yùn)算、轉(zhuǎn)換、拼接等等),就要單獨(dú)寫一個df.head或df檢查新的 DataFrame 對象。
這真的太麻煩了,怎么提高效率呢?
更改默認(rèn)輸出
由于Jupyter Notebook 建立在IPython庫之上,我們通過運(yùn)行以下代碼來更改默認(rèn)輸出行為。它會更改 Jupyter Notebook 所依賴的 IPython 中交互式 shell 的工作方式。
from?IPython.core.interactiveshell?import?InteractiveShell?
InteractiveShell.ast_node_interactivity?=?"last_expr_or_assign"
其作用就是:顯示最后一個表達(dá)式的計(jì)算結(jié)果或賦值語句中使用的值。

在運(yùn)行了這兩行代碼后,我們再運(yùn)行前面的Pandas代碼,就會發(fā)現(xiàn):

如上圖所示,我們不再需要運(yùn)行df.head,所創(chuàng)建的DataFrame對象會自動顯示出來供我們檢查數(shù)據(jù)。
換成其他操作也是一樣的輸出結(jié)果。

這樣的話,我們每執(zhí)行一個操作就可以直接顯示操作后的 DataFrame 對象。
是不是很方便~
其實(shí)除了“l(fā)ast_expr_or_assign”選項(xiàng)之外,我們還可以嘗試其他選項(xiàng)。
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設(shè)置改為all后,
from?IPython.core.interactiveshell?import?InteractiveShell
InteractiveShell.ast_node_interactivity?=?"all"
就可以實(shí)現(xiàn)一次性輸出多個結(jié)果。

一勞永逸
但是,最喜歡偷懶的我,肯定不樂意每次新建一個 Notebook 就要輸入這兩行代碼呀。
from?IPython.core.interactiveshell?import?InteractiveShell?
InteractiveShell.ast_node_interactivity?=?"last_expr_or_assign"
所以我們可以用這個方案,一勞永逸 :
在我們電腦的/.ipython/profile_default目錄下,創(chuàng)建一個名為ipython_config.py的文件。

接著將下面這段代碼寫入ipython_config.py文件中。
c?=?get_config()
c.InteractiveShell.ast_node_interactivity?=?"last_expr_or_assign"

創(chuàng)建該此文件后,我們再創(chuàng)建任何 Notebook 文件,打開之后的輸出行為都被固定下來了。
抑制輸出
這時候又有小伙伴會問了,我有的代碼單元格不想輸出咋辦啊。
啊這。。。
要不你再改回去?
算了,還有個方法,
就是在你的代碼后面加個分號,就能抑制輸出了。

如上圖所示,當(dāng)我們以分號結(jié)束時,就不會顯示更多輸出。

各位伙伴們好,詹帥本帥搭建了一個個人博客和小程序,匯集各種干貨和資源,也方便大家閱讀,感興趣的小伙伴請移步小程序體驗(yàn)一下哦?。g迎提建議)
推薦閱讀
牛逼!Python常用數(shù)據(jù)類型的基本操作(長文系列第①篇)
牛逼!Python的判斷、循環(huán)和各種表達(dá)式(長文系列第②篇)
推薦閱讀
牛逼!Python常用數(shù)據(jù)類型的基本操作(長文系列第①篇)
牛逼!Python的判斷、循環(huán)和各種表達(dá)式(長文系列第②篇)
