Anaconda入門:Navigator、Spyder和Jupyter Notebook

Anaconda安裝后,可以從菜單中看到它包含幾個(gè)應(yīng)用程序,其中Anaconda Navigator是這幾個(gè)程序的導(dǎo)航入口。

1.Anaconda Navigator是什么?

Anaconda Navigator是Anaconda發(fā)行包中包含的桌面圖形界面,可以用來(lái)方便地啟動(dòng)應(yīng)用、方便的管理conda包、環(huán)境和頻道,不需要使用命令行的命令。Navigator可以從Anaconda Cloud或本地Anaconda倉(cāng)庫(kù)中搜索包。提供了Windwos、maxOS和Linux版本。


Anaconda Navigator
Anaconda Navigator

2.通過(guò)Navigator可以啟動(dòng)那些應(yīng)用?

Anaconda安裝后,缺省的包含下列應(yīng)用:

  • Jupyter Notebook
  • Orange App
  • QTConsole
  • Glueviz
  • Spyder
  • RStudio

3.如何使用Navigator運(yùn)行代碼?

最簡(jiǎn)單的方式就是運(yùn)行Spyder. 從Navigator的Home頁(yè)面,點(diǎn)擊Spyder, 就可以啟動(dòng)它并寫(xiě)代碼并運(yùn)行它了。


Spyder
Spyder

4.Jupyter Notebook介紹

文學(xué)編程

在介紹 Jupyter Notebook 之前,讓我們先來(lái)看一個(gè)概念:文學(xué)編程 ( Literate programming ),這是由 Donald Knuth 提出的編程方法。傳統(tǒng)的結(jié)構(gòu)化編程,人們需要按計(jì)算機(jī)的邏輯順序來(lái)編寫(xiě)代碼;與此相反,文學(xué)編程則可以讓人們按照自己的思維邏輯來(lái)開(kāi)發(fā)程序。

簡(jiǎn)單來(lái)說(shuō),文學(xué)編程的讀者不是機(jī)器,而是人。 我們從寫(xiě)出讓機(jī)器讀懂的代碼,過(guò)渡到向人們解說(shuō)如何讓機(jī)器實(shí)現(xiàn)我們的想法,其中除了代碼,更多的是敘述性的文字、圖表等內(nèi)容。這么一看,這不正是數(shù)據(jù)分析人員所需要的編碼風(fēng)格么?不僅要當(dāng)好一個(gè)程序員,還得當(dāng)好一個(gè)作家。那么 Jupyter Notebook 就是不可或缺的一款集編程和寫(xiě)作于一體的效率工具。

歷史傳承

也許說(shuō)到 Jupyter 你會(huì)覺(jué)得陌生,但想必你或多或少聽(tīng)過(guò)鼎鼎大名的 IPython。其實(shí)Jupyter 脫胎于 IPython 項(xiàng)目,IPython 顧名思義,是專注于 Python 的項(xiàng)目,但隨著項(xiàng)目發(fā)展壯大,已經(jīng)不僅僅局限于 Python 這一種編程語(yǔ)言了。Jupyter 的名字就很好地釋義了這一發(fā)展過(guò)程,它是 Julia、Python 以及 R 語(yǔ)言的組合,字形相近于木星(Jupiter),而且現(xiàn)在支持的語(yǔ)言也遠(yuǎn)超這三種了。

優(yōu)點(diǎn)

以下列舉了 Jupyter Notebook 的眾多優(yōu)點(diǎn):

  • 極其適合數(shù)據(jù)分析。

想象一下如下混亂的場(chǎng)景:你在終端中運(yùn)行程序,可視化結(jié)果卻顯示在另一個(gè)窗口中,包含函數(shù)和類的腳本存在其他文檔中,更可惡的是你還需另外寫(xiě)一份說(shuō)明文檔來(lái)解釋程序如何執(zhí)行以及結(jié)果如何。此時(shí) Jupyter Notebook 從天而降,將所有內(nèi)容收歸一處,你是不是頓覺(jué)靈臺(tái)清明,思路更加清晰了呢?

  • 支持多語(yǔ)言。

也許你習(xí)慣使用 R 語(yǔ)言來(lái)做數(shù)據(jù)分析,或者是想用學(xué)術(shù)界常用的 MATLAB 和 Mathematica,這些都不成問(wèn)題,只要安裝相對(duì)應(yīng)的核(kernel)即可。

  • 分享便捷。

支持以網(wǎng)頁(yè)的形式分享,GitHub 中天然支持 Notebook 展示,也可以通過(guò) nbviewer 分享你的文檔。當(dāng)然也支持導(dǎo)出成 HTML、Markdown 、PDF 等多種格式的文檔。

  • 遠(yuǎn)程運(yùn)行。

在任何地點(diǎn)都可以通過(guò)網(wǎng)絡(luò)鏈接遠(yuǎn)程服務(wù)器來(lái)實(shí)現(xiàn)運(yùn)算,這里給出一個(gè)遠(yuǎn)程運(yùn)行的例子,可以體驗(yàn)一下 Jupyter Notebook。

  • 交互式展現(xiàn)。

不僅可以輸出圖片、視頻、數(shù)學(xué)公式,甚至可以呈現(xiàn)一些互動(dòng)的可視化內(nèi)容,比如可以縮放的地圖或者是可以旋轉(zhuǎn)的三維模型。這就需要交互式插件(Interactive widgets)來(lái)支持,更多內(nèi)容請(qǐng)參考這里。

運(yùn)行

如果使用 Anaconda,可以在其 Navigator 圖形界面中點(diǎn)擊打開(kāi) Notebook。但是最快捷的方法還是在命令行中輸入:

jupyter notebook

此時(shí)你的 Web 瀏覽器被自動(dòng)打開(kāi),顯示文件目錄。通過(guò)點(diǎn)擊右上角的 new 創(chuàng)建新文檔。


jupyter notebook
jupyter notebook

而關(guān)閉 notebook 文檔可以通過(guò)選擇文件名前的復(fù)選框后,點(diǎn)擊 Shutdown 按鈕實(shí)現(xiàn)。如果要關(guān)閉整個(gè)服務(wù),則在原來(lái)的終端中按 Control + C 兩次。

界面

Notebook 文檔是由一系列單元(Cell)構(gòu)成,主要有兩種形式的單元:

  • 代碼單元:這里是你編寫(xiě)代碼的地方,通過(guò)按 Shift + Enter 運(yùn)行代碼,其結(jié)果顯示在本單元下方。代碼單元左邊有 In [1]: 這樣的序列標(biāo)記,方便人們查看代碼的執(zhí)行次序。

  • Markdown 單元:在這里對(duì)文本進(jìn)行編輯,采用 markdown 的語(yǔ)法規(guī)范,可以設(shè)置文本格式、插入鏈接、圖片甚至數(shù)學(xué)公式。同樣使用 Shift + Enter 運(yùn)行 markdown 單元來(lái)顯示格式化的文本。

jupyter notebook edit
jupyter notebook edit

類似于 Linux 的 Vim 編輯器,在 notebook 中也有兩種模式:

  • 編輯模式:編輯文本和代碼。選中單元并按 Enter 鍵進(jìn)入編輯模式,此時(shí)單元左側(cè)顯示綠色豎線。
  • 命令模式:用于執(zhí)行鍵盤輸入的快捷命令。通過(guò) Esc 鍵進(jìn)入命令模式,此時(shí)單元左側(cè)顯示藍(lán)色豎線。

如果要使用快捷鍵,首先按 Esc 鍵進(jìn)入命令模式,然后按相應(yīng)的鍵實(shí)現(xiàn)對(duì)文檔的操作。比如切換成代碼單元(Y)或 markdown 單元(M),或者在本單元的下方增加一單元(B)。查看所有快捷命令可以按H。

盡管一開(kāi)始需要花費(fèi)一些學(xué)習(xí)成本,但熟練使用快捷鍵將大大提高工作效率。試想你在鍵盤上十指如飛時(shí),如果還需要通過(guò)鼠標(biāo)來(lái)操作文檔,是不是很影響思考速度呢?

Jupyter Notebook 進(jìn)階功能

數(shù)學(xué)公式編輯

如果你曾做過(guò)嚴(yán)肅的學(xué)術(shù)研究,一定對(duì) LaTeX 并不陌生,這簡(jiǎn)直是寫(xiě)科研論文的必備工具,不但能實(shí)現(xiàn)嚴(yán)格的文檔排版,而且能編輯復(fù)雜的數(shù)學(xué)公式。在 Jupyter Notebook 的 markdown 單元中我們也可以使用 LaTeX 的語(yǔ)法來(lái)插入數(shù)學(xué)公式。

在文本行中插入數(shù)學(xué)公式,使用一對(duì) $符號(hào),比如質(zhì)能方程 $E = mc^2$。如果要插入一個(gè)數(shù)學(xué)區(qū)塊,則使用一對(duì)美元$符號(hào)。比如下面公式表示 z=x/y:

$ $ z = frac{x}{y} $ $

如何在 notebook 中使用 LaTeX,可進(jìn)一步參考 A Primer on Using LaTeX in Jupyter Notebooks 這篇文章。

幻燈片制作

既然Jupyter Notebook 擅長(zhǎng)展示數(shù)據(jù)分析的過(guò)程,除了通過(guò)網(wǎng)頁(yè)形式分享外,當(dāng)然也可以將其制作成幻燈片的形式。這里有一個(gè)幻燈片示例供參考,其制作風(fēng)格簡(jiǎn)潔明晰。

那么如何用 Jupyter Notebook 制作幻燈片呢?首先在 notebook 的菜單欄選擇 View > Cell Toolbar > Slideshow,這時(shí)在文檔的每個(gè)單元右上角顯示了 Slide Type 的選項(xiàng)。通過(guò)設(shè)置不同的類型,來(lái)控制幻燈片的格式。有如下5中類型:

  • Slide:主頁(yè)面,通過(guò)按左右方向鍵進(jìn)行切換。
  • Sub-Slide:副頁(yè)面,通過(guò)按上下方向鍵進(jìn)行切換。
  • Fragment:一開(kāi)始是隱藏的,按空格鍵或方向鍵后顯示,實(shí)現(xiàn)動(dòng)態(tài)效果。
  • Skip:在幻燈片中不顯示的單元。
  • Notes:作為演講者的備忘筆記,也不在幻燈片中顯示。


    jupyter notebook slide
    jupyter notebook slide

當(dāng)編寫(xiě)好了幻燈片形式的 notebook,如何來(lái)演示呢?這時(shí)需要使用 nbconvert:

jupyter nbconvert notebook.ipynb --to slides --post serve

在命令行中敲入上述代碼后,瀏覽器會(huì)自動(dòng)打開(kāi)相應(yīng)的幻燈片。

魔術(shù)關(guān)鍵字

魔術(shù)關(guān)鍵字(magic keywords),正如其名,是用于控制 notebook 的特殊的命令。它們運(yùn)行在代碼單元中,以 % 或者 %% 開(kāi)頭,前者控制一行,后者控制整個(gè)單元。

比如,要得到代碼運(yùn)行的時(shí)間,則可以使用 %timeit;如果要在文檔中顯示 matplotlib 包生成的圖形,則使用 % matplotlib inline;如果要做代碼調(diào)試,則使用 %pdb。但注意這些命令大多是在Python kernel 中適用的,其他 kernel 大多不適用。有許許多多的魔術(shù)關(guān)鍵字可以使用,更詳細(xì)的清單請(qǐng)參考 Built-in magic commands

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容