日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

快速入门 Jupyter notebook

發布時間:2023/12/10 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 快速入门 Jupyter notebook 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019 年第 64 篇文章,總第 88 篇文章

本文大約?6400?字,閱讀大約需要 17?分鐘

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

Jupyter notebook 是一個很強大的交互式和展示數據科學項目的工具,它可以作為一個開發文檔,包含代碼、解釋說明文字、代碼運行結果、數學公式等等,功能非常強大,也是現在非常流行的工具。

本文會通過一個簡單的數據分析例子來介紹 Jupyter notebook 的使用方法。這里的例子就是給定一個自 1955 年發布以來,一共 50 年時間的美國 500 家公司的數據,任務是分析這些公司的利潤變化過程。

1. 安裝

最簡單的安裝方式就是通過?Anaconda?進行安裝,Anaconda?是使用最廣泛的環境管理工具,并且它可以預先安裝很多常用的第三方庫,包括?numpy?、pandas?、matplotlib?等。

具體的?Anaconda?可以查看之前公眾號發表過的一篇文章--Python 基礎入門--簡介和環境配置。

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

pip?install?jupyter

2. 創建你的第一個 Notebook

這一部分將介紹如何運行和保存?notebooks,熟悉?Jupyter notebook?的結構和交互界面。這里將通過一個例子來熟悉一些核心的用法,更好的了解?Jupyter notebook?的使用。

運行 Jupyter

在 Windows,可以通過添加到開始菜單的快捷方式運行?Jupyter?,當然也可以通過在命令行輸入命令?jupyter notebook?開始運行,然后會在默認瀏覽器中打開一個新的窗口,窗口內容如下:

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

注意,這里僅僅展示 Jupyter 運行時候的所在文件夾內的文件和文件夾,也就是在命令行運行?jupyter notebook?時所在的文件夾,當然這個也可以改變,運行命令的時候可以指定文件夾位置,即輸入:

jupyter?notebook?filepath

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

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

ipynb 文件

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

notebook 界面

現在開始介紹下 notebook 的界面信息,一個新的 notebook 界面如下圖所示。

這里有兩個術語需要知道--cells?和?kernels?,兩個都是非常重要的術語:

  • kernel?:表示計算引擎,用于執行 notebook 中的代碼塊

  • cell?:單元塊,用于展示文本或者是代碼。

單元(Cells)

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

  • code cell?:包括需要執行的代碼,以及其運行結果

  • Markdown cell?:包含的是 Markdown 格式的文本并且其執行結果

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

可以注意到?code cell?的左側會有一個標簽?In [1]?,這里的數字表示該代碼塊運行的次序,即在該 notebook 中,如果沒有執行,顯示的是?In [ ]?,如果是該 notebook 第一個運行的代碼塊,則是?In [1]?,如果再次運行,則顯示?In [2],依次類推,同個代碼塊多次執行,這個數字也是會改變的。而?In?是?Input?的縮寫。如果代碼塊運行時間有點久,它會顯示?In [*]?,表示當前代碼塊正在運行中。

對于 notebook,還可以直接展示變量的數值,或者是函數的返回值,不需要調用?print?函數,如下圖所示,當然它只會打印當前單元的最后一行的內容。

還需要注意的一件事情就是,對于一個單元,如果正在編輯,其邊界框顯示的是綠色,而運行時候則顯示藍色。這里展示的就是兩種模式,即綠色表示編輯模式,藍色表示命令模式

快捷鍵

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

  • 編輯模式和命令模式可以通過?Esc?和?Enter?進行轉換,一般是按?Esc?進入命令模式,Enter?進入編輯模式

命令模式下:

  • 在?cell?之間上下瀏覽采用上下箭頭,或者?Up?和?Down?鍵

  • A?表示在當前?cell?上方插入一個新的?cell?,而?B?則是下方插入新的cell

  • M?表示變為?Markdown cell?,而?Y?是表示變為?code cell

  • 連續按兩次?D?是刪除當前?cell

  • Z?是撤銷操作

  • Shift?加上?Up?或者?Down?可以一次選擇多個?cells?,接著采用?Shift + M?可以合并多個?cells

Markdown

Markdown?是一個輕量級的易于學習使用的標記語言,主要用于格式化文本文字。它的語法類似 HTML 語言,是一個非常有幫助的語言,可以用于添加注釋說明或者添加圖片。

可以嘗試在 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)

得到的結果如下圖所示:

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

  • 使用網絡上的圖片,添加其網絡鏈接 URL,比如上述例子就是這種做法,URL 是 https://www.example.com/image.jpg

  • 采用一個本地 URL,那么圖片就只能使用在該 notebook 中,比如在同一個 git 倉庫中

  • 菜單欄選擇 “Edit->Insert Image",這種做法會將圖片轉換為字符串形式并存儲在?.ipynb?文件中,這種做法會增加?ipynb?文件的大小

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

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

Kernels

每個 notebook 都有一個 kernel。當執行一個單元內的代碼的時候,就是采用 kernel 來運行代碼,并將結果輸出顯示在單元內。同時 kernel 的狀態會保留,并且不止局限在一個單元內,即一個單元內的變量或者導入的第三方庫,也是可以在另一個單元內使用的,并不是相互獨立的。

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

這里同樣用一個代碼例子進行介紹 kernel 的這種特性,如下圖所示,分別在兩個單元內輸入兩段代碼,第一個單元內時導入?numpy?并定義函數?square(),而第二個單元內就調用了這個函數?square()?,并成功運行輸出結果。

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

此外,我們還可以重新運行整個 kernel,這里介紹菜單?Kernel?中的幾個選項:

  • Restart?:重新開始 kernel,這會清空 notebook 中所有的變量定義

  • Restart & Clear Output: 和第一個選項相同,但還會將所有輸出都清除

  • Restart & Run All: 重新開始,并且會自動從頭開始運行所有的單元內的代碼

通常如果 kernel 陷入某個單元的代碼運行中,希望停止該代碼的運行,則可以采用?Interupt?選項。

選擇一個 kernel

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

3. 數據分析例子

現在就開始文章開始說的數據分析例子,即從一份公司財富數據中分析公司的利潤變化情況。

命名 notebooks

首先,給 notebook 命名一個有意義的名字,比如?jupyter-notebook-tuorial,可以直接在 notebook 界面直接點擊上方文件名,如果未命名,那就是?Untitle.ipynb?,當然也可以返回管理界面進行命名,如下所示,選擇 notebook 后,上方會出現一行選項,包括:

  • Duplicate:復制

  • Shutdown:停止該 notebook 的 kernel

  • View:查看 notebook 內容

  • Edit?:編輯其?metadata?內容

以及還有一個刪除文件的選項。

注意,關閉 notebook 的界面并不會關掉 notebook 的 kernel,它會一直在后臺運行,在管理界面看到 notebook 還是綠色狀態,就表明其在運行,這需要選擇?Shutdown?選項,或者命令行里關掉?Jupyter notebook?的命令。

準備工作

首先導入一些需要用的第三方庫:

%matplotlib?inline import?pandas?as?pd import?matplotlib.pyplot?as?plt import?seaborn?as?sns sns.set()

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

接著就是讀取數據:

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

保存和檢查點(checkpoint)

在開始前,要記得定時保存文件,這可以直接采用快捷鍵?Ctrl + S?保存文件,它是通過一個命令--“保存和檢查點”實現的,那么什么是檢查點呢?

每次創建一個新的 notebook,同時也創建了一個?checkpoint?文件,它保存在一個隱藏的子文件夾?.ipynb_checkpoints?中,并且也是一個?.ipynb?文件。默認 Jupyter 會每隔 120 秒自動保存 notebook 的內容到?checkpoint?文件中,而當你手動保存的時候,也會更新 notebook 和 checkpoint 文件。這個文件可以在因為意外原因關閉 notebook 后恢復你未保存的內容,可以在菜單中?File->Revert to Checkpoint?中恢復。

對數據集的探索

現在開始處理我們的數據集,通過?pandas?讀取后得到的是稱為?DataFrame?的數據結構,首先就是先查看下數據集的內容,輸入以下兩行代碼,分別表示輸出數據的前五行,和最后五行的內容。

df.head() df.tail()

輸出內容如下所示:

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

接著,為了方便,可以對列重命名:

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

然后,還可以查看數據量,如下所示:

len(df)

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

接著,我們再查看數據集是否和我們希望導入的一樣,一個簡單的檢查方法就是查看數據類型是否正確:

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

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

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

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

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

刪除數據后,profit?就是?float64?類型了。

簡單的數據探索完成了,接下來進行圖表的繪制。

采用 matplotlib 進行繪制圖表

首先繪制隨著年份變化的平均利潤表,同時也會繪制收入隨年份的變化情況,如下圖所示:

結果看起來有點類似指數式增長,但出現兩次巨大的下降情況,這其實和當時發生的事件有關系,接下來可以看看收入的變化情況,如下圖所示:

從收入看,變化并沒有像利潤一樣出現兩次波動。

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

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

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


參考

  • Markdown:https://www.markdownguide.org/getting-started

  • https://stackoverflow.com/a/47582329/604687


最后本文的代碼和教程可以公眾號后臺回復“Jupyter”獲取鏈接地址,或者點擊閱讀原文。

歡迎關注我的微信公眾號--算法猿的成長,或者掃描下方的二維碼,大家一起交流,學習和進步!

如果覺得不錯,在看、轉發就是對小編的一個支持!

總結

以上是生活随笔為你收集整理的快速入门 Jupyter notebook的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。