日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

Jupyter notebook 入门教程

發(fā)布時(shí)間:2023/12/10 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Jupyter notebook 入门教程 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

原文鏈接:https://www.dataquest.io/blog/jupyter-notebook-tutorial/

Jupyter notebook 是一個(gè)很強(qiáng)大的交互式和展示數(shù)據(jù)科學(xué)項(xiàng)目的工具,它可以作為一個(gè)開發(fā)文檔,包含代碼、解釋說明文字、代碼運(yùn)行結(jié)果、數(shù)學(xué)公式等等,功能非常強(qiáng)大,也是現(xiàn)在非常流行的工具。

本文會(huì)通過一個(gè)簡(jiǎn)單的數(shù)據(jù)分析例子來介紹 Jupyter notebook 的使用方法。這里的例子就是給定一個(gè)自 1955 年發(fā)布以來,一共 50 年時(shí)間的美國 500 家公司的數(shù)據(jù),任務(wù)是分析這些公司的利潤(rùn)變化過程。

1. 安裝

最簡(jiǎn)單的安裝方式就是通過 Anaconda 進(jìn)行安裝,Anaconda 是使用最廣泛的環(huán)境管理工具,并且它可以預(yù)先安裝很多常用的第三方庫,包括 numpy 、pandas 、matplotlib 等。

具體的 Anaconda 可以查看之前公眾號(hào)發(fā)表過的一篇文章–Python 基礎(chǔ)入門–簡(jiǎn)介和環(huán)境配置。

除了通過 Anaconda 安裝,也可以直接采用 pip

pip install jupyter

2. 創(chuàng)建你的第一個(gè) Notebook

這一部分將介紹如何運(yùn)行和保存 notebooks,熟悉 Jupyter notebook 的結(jié)構(gòu)和交互界面。這里將通過一個(gè)例子來熟悉一些核心的用法,更好的了解 Jupyter notebook 的使用。

運(yùn)行 Jupyter

在 Windows,可以通過添加到開始菜單的快捷方式運(yùn)行 Jupyter ,當(dāng)然也可以通過在命令行輸入命令 jupyter notebook 開始運(yùn)行,然后會(huì)在默認(rèn)瀏覽器中打開一個(gè)新的窗口,窗口內(nèi)容如下:

[外鏈圖片轉(zhuǎn)存失敗(img-uQPLSFMw-1564192150183)(https://cai-images-1257823952.cos.ap-beijing.myqcloud.com/jupyter-dashboard.jpg)]

當(dāng)然上述還不是一個(gè) notebook,它是 Notebook 的管理界面,用于管理當(dāng)前文件夾的所有 Notebooks。

注意,這里僅僅展示 Jupyter 運(yùn)行時(shí)候的所在文件夾內(nèi)的文件和文件夾,也就是在命令行運(yùn)行 jupyter notebook 時(shí)所在的文件夾,當(dāng)然這個(gè)也可以改變,運(yùn)行命令的時(shí)候可以指定文件夾位置,即輸入:

jupyter notebook filepath

此外,這里在瀏覽器上的 URL 地址是類似 http://localhost:8888/tree,其中 localhost 是表示本地地址,然后 8888 是端口。

接下來就是創(chuàng)建一個(gè)新的 notebook,可以如下圖所示,在管理界面的右上角位置,點(diǎn)擊 New 菜單,這里就可以選擇 Python 3 (或者其他的版本),然后就可以創(chuàng)建成功,并且是在新的窗口打開這個(gè) notebook,在默認(rèn)命名就是 Untitled.ipynb。

ipynb 文件

每個(gè) ipynb 文件都是通過 JSON 格式來描述 notebook 的內(nèi)容,包括每個(gè)單元及其內(nèi)容,都是通過 metadata 的格式展示。這里可以在打開 ipynb 文件后,菜單中選擇 Edit->Edit Notebook Metadata ,進(jìn)行編輯。

notebook 界面

現(xiàn)在開始介紹下 notebook 的界面信息,一個(gè)新的 notebook 界面如下圖所示。

這里有兩個(gè)術(shù)語需要知道–cells 和 kernels ,兩個(gè)都是非常重要的術(shù)語:

  • kernel :表示計(jì)算引擎,用于執(zhí)行 notebook 中的代碼塊
  • cell :單元塊,用于展示文本或者是代碼。

單元(Cells)

首先介紹的是 Cells ,一個(gè) Cell 就是上圖中綠色框部分,它是 notebook 的主要部分,通常有兩種主要的 cell 類似:

  • code cell :包括需要執(zhí)行的代碼,以及其運(yùn)行結(jié)果
  • Markdown cell :包含的是 Markdown 格式的文本并且其執(zhí)行結(jié)果

下圖展示了一個(gè)簡(jiǎn)單的例子,第一行 Jupyter 入門教程 這個(gè)就是一個(gè) Markdown cell ,這里展示的是執(zhí)行這個(gè) cell 的結(jié)果,如果需要執(zhí)行一個(gè) cell ,可以點(diǎn)擊 Run 按鈕,或者快捷鍵 Ctrl + Enter 即可,然后下方兩個(gè)都是 code cell ,第一個(gè)是導(dǎo)入第三方庫,第二個(gè)則是打印一段話以及其運(yùn)行結(jié)果。

可以注意到 code cell 的左側(cè)會(huì)有一個(gè)標(biāo)簽 In [1] ,這里的數(shù)字表示該代碼塊運(yùn)行的次序,即在該 notebook 中,如果沒有執(zhí)行,顯示的是 In [ ] ,如果是該 notebook 第一個(gè)運(yùn)行的代碼塊,則是 In [1] ,如果再次運(yùn)行,則顯示 In [2] ,依次類推,同個(gè)代碼塊多次執(zhí)行,這個(gè)數(shù)字也是會(huì)改變的。而 In 是 Input 的縮寫。如果代碼塊運(yùn)行時(shí)間有點(diǎn)久,它會(huì)顯示 In [*] ,表示當(dāng)前代碼塊正在運(yùn)行中。

對(duì)于 notebook,還可以直接展示變量的數(shù)值,或者是函數(shù)的返回值,不需要調(diào)用 print 函數(shù),如下圖所示,當(dāng)然它只會(huì)打印當(dāng)前單元的最后一行的內(nèi)容。

[外鏈圖片轉(zhuǎn)存失敗(img-6tcWOCfK-1564192150218)(https://cai-images-1257823952.cos.ap-beijing.myqcloud.com/cell2.png)]

還需要注意的一件事情就是,對(duì)于一個(gè)單元,如果正在編輯,其邊界框顯示的是綠色,而運(yùn)行時(shí)候則顯示藍(lán)色。這里展示的就是兩種模式,即綠色表示編輯模式,藍(lán)色表示命令模式。

快捷鍵

notebook 有很多快捷鍵,可以通過菜單中的 Help->Keyboard Shortcuts 查看,也可以直接用快捷鍵 Ctrl+Shift+P 查看。下面簡(jiǎn)單介紹一些快捷鍵:

  • 編輯模式和命令模式可以通過 Esc 和 Enter 進(jìn)行轉(zhuǎn)換,一般是按 Esc 進(jìn)入命令模式,Enter 進(jìn)入編輯模式

命令模式下:

  • 在 cell 之間上下瀏覽采用上下箭頭,或者 Up 和 Down 鍵
  • A 表示在當(dāng)前 cell 上方插入一個(gè)新的 cell ,而 B 則是下方插入新的 cell
  • M 表示變?yōu)?Markdown cell ,而 Y 是表示變?yōu)?code cell
  • 連續(xù)按兩次 D 是刪除當(dāng)前 cell
  • Z 是撤銷操作
  • Shift 加上 Up 或者 Down 可以一次選擇多個(gè) cells ,接著采用 Shift + M 可以合并多個(gè) cells

Markdown

Markdown 是一個(gè)輕量級(jí)的易于學(xué)習(xí)使用的標(biāo)記語言,主要用于格式化文本文字。它的語法類似 HTML 語言,是一個(gè)非常有幫助的語言,可以用于添加注釋說明或者添加圖片。

可以嘗試在 Jupyter notebook 中輸入下面的文字,記住是在 Markdown cell 中:

# This is a level 1 heading ## This is a level 2 heading This is some plain text that forms a paragraph. Add emphasis via **bold** and __bold__, or *italic* and _italic_. Paragraphs must be separated by an empty line. * Sometimes we want to include lists. * Which can be indented. 1. Lists can also be numbered. 2. For ordered lists. [It is possible to include hyperlinks](https://www.example.com) Inline code uses single backticks: `foo()`, and code blocks use triple backticks: ?``` bar() ?``` Or can be indented by 4 spaces: foo() And finally, adding images is easy: ![Alt text](https://www.example.com/image.jpg)

得到的結(jié)果如下圖所示:

如果想添加圖片,有三種做法:

  • 使用網(wǎng)絡(luò)上的圖片,添加其網(wǎng)絡(luò)鏈接 URL,比如上述例子就是這種做法,URL 是 https://www.example.com/image.jpg
  • 采用一個(gè)本地 URL,那么圖片就只能使用在該 notebook 中,比如在同一個(gè) git 倉庫中
  • 菜單欄選擇 “Edit->Insert Image",這種做法會(huì)將圖片轉(zhuǎn)換為字符串形式并存儲(chǔ)在 .ipynb 文件中,這種做法會(huì)增加 ipynb 文件的大小

Markdown 的使用方法可以參考其發(fā)明者 John Gruber 的官方教程:

https://daringfireball.net/projects/markdown/syntax

Kernels

每個(gè) notebook 都有一個(gè) kernel。當(dāng)執(zhí)行一個(gè)單元內(nèi)的代碼的時(shí)候,就是采用 kernel 來運(yùn)行代碼,并將結(jié)果輸出顯示在單元內(nèi)。同時(shí) kernel 的狀態(tài)會(huì)保留,并且不止局限在一個(gè)單元內(nèi),即一個(gè)單元內(nèi)的變量或者導(dǎo)入的第三方庫,也是可以在另一個(gè)單元內(nèi)使用的,并不是相互獨(dú)立的。

某種程度來說,notebook 可以看做是一個(gè)腳本文件,除了增加了更多輸入方式,比如說明文字、圖片等等。

這里同樣用一個(gè)代碼例子進(jìn)行介紹 kernel 的這種特性,如下圖所示,分別在兩個(gè)單元內(nèi)輸入兩段代碼,第一個(gè)單元內(nèi)時(shí)導(dǎo)入 numpy 并定義函數(shù) square(),而第二個(gè)單元內(nèi)就調(diào)用了這個(gè)函數(shù) square() ,并成功運(yùn)行輸出結(jié)果。

大部分情況下都是自頂向下的運(yùn)行每個(gè)單元的代碼,但這并不絕對(duì),實(shí)際上是可以重新回到任意一個(gè)單元,再次執(zhí)行這段代碼,因此每個(gè)單元左側(cè)的 In [ ] 就非常有用,其數(shù)字就告訴了我們它是運(yùn)行的第幾個(gè)單元。

此外,我們還可以重新運(yùn)行整個(gè) kernel,這里介紹菜單 Kernel 中的幾個(gè)選項(xiàng):

  • Restart :重新開始 kernel,這會(huì)清空 notebook 中所有的變量定義
  • Restart & Clear Output: 和第一個(gè)選項(xiàng)相同,但還會(huì)將所有輸出都清除
  • Restart & Run All: 重新開始,并且會(huì)自動(dòng)從頭開始運(yùn)行所有的單元內(nèi)的代碼

通常如果 kernel 陷入某個(gè)單元的代碼運(yùn)行中,希望停止該代碼的運(yùn)行,則可以采用 Interupt 選項(xiàng)。

選擇一個(gè) kernel

在 Kernel 菜單中同樣提供了一個(gè)更換 kernel 的選項(xiàng),最開始創(chuàng)建一個(gè) notebook 的時(shí)候,就是選擇了一個(gè) kernel ,當(dāng)然這里能否選擇其他的 kernel ,取決于是否有安裝,比如 Python 的版本,當(dāng)你同時(shí)安裝了 python3.6 和 python2.7 ,那么就有這兩個(gè)選擇,除了 Python 語言,Juypter notebook 支持的 kernel 還包括其他超過一百種語言,比如 Java、C、R、Julia 等等。

3. 數(shù)據(jù)分析例子

現(xiàn)在就開始文章開始說的數(shù)據(jù)分析例子,即從一份公司財(cái)富數(shù)據(jù)中分析公司的利潤(rùn)變化情況。

命名 notebooks

首先,給 notebook 命名一個(gè)有意義的名字,比如 jupyter-notebook-tuorial,可以直接在 notebook 界面直接點(diǎn)擊上方文件名,如果未命名,那就是 Untitle.ipynb ,當(dāng)然也可以返回管理界面進(jìn)行命名,如下所示,選擇 notebook 后,上方會(huì)出現(xiàn)一行選項(xiàng),包括:

  • Duplicate:復(fù)制
  • Shutdown:停止該 notebook 的 kernel
  • View:查看 notebook 內(nèi)容
  • Edit :編輯其 metadata 內(nèi)容

以及還有一個(gè)刪除文件的選項(xiàng)。

注意,關(guān)閉 notebook 的界面并不會(huì)關(guān)掉 notebook 的 kernel,它會(huì)一直在后臺(tái)運(yùn)行,在管理界面看到 notebook 還是綠色狀態(tài),就表明其在運(yùn)行,這需要選擇 Shutdown 選項(xiàng),或者命令行里關(guān)掉 Jupyter notebook 的命令。

準(zhǔn)備工作

首先導(dǎo)入一些需要用的第三方庫:

%matplotlib inline import pandas as pd import matplotlib.pyplot as plt import seaborn as sns sns.set(style="darkgrid")

pandas 用于處理數(shù)據(jù),Matplotlib 用于繪制圖表,而 seaborn 可以讓圖表更加漂亮。通常也需要導(dǎo)入 Numpy ,不過在本例中我們將通過 pandas 來使用。此外,%matplotlib inline 這并不是 python 的命令,它是 Jupyter 中獨(dú)有的魔法命令,它主要是讓 Jupyter 可以捕獲 Matplotlib 的圖片,并在單元輸出中渲染。

接著就是讀取數(shù)據(jù):

df = pd.read_csv('fortune500.csv')

保存和檢查點(diǎn)(checkpoint)

在開始前,要記得定時(shí)保存文件,這可以直接采用快捷鍵 Ctrl + S 保存文件,它是通過一個(gè)命令–“保存和檢查點(diǎn)”實(shí)現(xiàn)的,那么什么是檢查點(diǎn)呢?

每次創(chuàng)建一個(gè)新的 notebook,同時(shí)也創(chuàng)建了一個(gè) checkpoint 文件,它保存在一個(gè)隱藏的子文件夾 .ipynb_checkpoints 中,并且也是一個(gè) .ipynb 文件。默認(rèn) Jupyter 會(huì)每隔 120 秒自動(dòng)保存 notebook 的內(nèi)容到 checkpoint 文件中,而當(dāng)你手動(dòng)保存的時(shí)候,也會(huì)更新 notebook 和 checkpoint 文件。這個(gè)文件可以在因?yàn)橐馔庠蜿P(guān)閉 notebook 后恢復(fù)你未保存的內(nèi)容,可以在菜單中 File->Revert to Checkpoint 中恢復(fù)。

對(duì)數(shù)據(jù)集的探索

現(xiàn)在開始處理我們的數(shù)據(jù)集,通過 pandas 讀取后得到的是稱為 DataFrame 的數(shù)據(jù)結(jié)構(gòu),首先就是先查看下數(shù)據(jù)集的內(nèi)容,輸入以下兩行代碼,分別表示輸出數(shù)據(jù)的前五行,和最后五行的內(nèi)容。

df.head() df.tail()

輸出內(nèi)容如下所示:

[外鏈圖片轉(zhuǎn)存失敗(img-fp0HuayR-1564192150225)(https://cai-images-1257823952.cos.ap-beijing.myqcloud.com/example1.png)]

通過查看,我們了解到每行就是一個(gè)公司在某一年的數(shù)據(jù),然后總共有 5 列,分別表示年份、排名、公司名字、收入和利潤(rùn)。

接著,為了方便,可以對(duì)列重命名:

df.columns = ['year', 'rank', 'company', 'revenue', 'profit']

然后,還可以查看數(shù)據(jù)量,如下所示:

len(df)

如下圖所示,總共有 25500 條數(shù)據(jù),剛好就是 500 家公司從 1955 到 2005 的數(shù)據(jù)量。

接著,我們?cè)俨榭磾?shù)據(jù)集是否和我們希望導(dǎo)入的一樣,一個(gè)簡(jiǎn)單的檢查方法就是查看數(shù)據(jù)類型是否正確:

[外鏈圖片轉(zhuǎn)存失敗(img-b2jndNXA-1564192150246)(https://cai-images-1257823952.cos.ap-beijing.myqcloud.com/jupyter_beginner_exm2.png)]

這里可以發(fā)現(xiàn) profit 數(shù)據(jù)類型居然是 object 而不是和收入 revenue 一樣的float64 類型,這表示其中可能包含一些非數(shù)字的數(shù)值,因此我們需要檢查一下:

輸出結(jié)果表明確實(shí)存在非整數(shù)的數(shù)值,而是是 N.A,然后我們需要確定是否包含其他類型的數(shù)值:

輸出結(jié)果表示只有 N.A ,那么該如何處理這種缺失情況呢,這首先取決有多少行數(shù)據(jù)缺失了 profit :

369 條數(shù)據(jù)缺失,相比于總共 25500 條數(shù)據(jù),僅占據(jù) 1.5% 左右。如果缺失的數(shù)據(jù)隨著年份的變化符合正態(tài)分布,那么最簡(jiǎn)單的方法就是直接刪除這部分?jǐn)?shù)據(jù)集,代碼如下所示

從結(jié)果看,缺失數(shù)據(jù)最多的一年也就是 25 條也不到,相比每年 500 條數(shù)據(jù),最多占據(jù) 4%,并且只有在 90 年代的數(shù)據(jù)缺失會(huì)超過 20 條,其余年份基本在 10 條以下,因此可以接受直接刪除缺失值的數(shù)據(jù),代碼如下:

[外鏈圖片轉(zhuǎn)存失敗(img-jV6jxonI-1564192150252)(https://cai-images-1257823952.cos.ap-beijing.myqcloud.com/jupyter_beginner_exm7.png)]

刪除數(shù)據(jù)后,profit 就是 float64 類型了。

簡(jiǎn)單的數(shù)據(jù)探索完成了,接下來進(jìn)行圖表的繪制。

采用 matplotlib 進(jìn)行繪制圖表

首先繪制隨著年份變化的平均利潤(rùn)表,同時(shí)也會(huì)繪制收入隨年份的變化情況,如下圖所示:

結(jié)果看起來有點(diǎn)類似指數(shù)式增長(zhǎng),但出現(xiàn)兩次巨大的下降情況,這其實(shí)和當(dāng)時(shí)發(fā)生的事件有關(guān)系,接下來可以看看收入的變化情況,如下圖所示:

從收入看,變化并沒有像利潤(rùn)一樣出現(xiàn)兩次波動(dòng)。

參考 https://stackoverflow.com/a/47582329/604687,我們添加了利潤(rùn)和收入的標(biāo)準(zhǔn)差情況,用于反饋同一年不同公司的收入或者利潤(rùn)差距,如下圖所示:

結(jié)果表明了不同公司的差距還是很大的,存在有收入幾十億,也有虧損幾十億的公司。

其實(shí)還有很多問題可以深入探討,但目前給出的例子已經(jīng)足夠入門 Jupyter notebook,這部分例子展示了如何分析探索數(shù)據(jù),繪制數(shù)據(jù)的圖表。


參考

  • Markdown:https://www.markdownguide.org/getting-started
  • https://stackoverflow.com/a/47582329/604687

最后本文的代碼和數(shù)據(jù)可以公眾號(hào)后臺(tái)回復(fù)“Jupyter”獲取鏈接地址。

歡迎關(guān)注我的微信公眾號(hào)–算法猿的成長(zhǎng),或者掃描下方的二維碼,大家一起交流,學(xué)習(xí)和進(jìn)步!

總結(jié)

以上是生活随笔為你收集整理的Jupyter notebook 入门教程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。