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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Jupyter notebook 入门教程

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

原文鏈接: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 開始運行,然后會在默認瀏覽器中打開一個新的窗口,窗口內容如下:

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

當然上述還不是一個 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 函數,如下圖所示,當然它只會打印當前單元的最后一行的內容。

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

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

快捷鍵

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(style="darkgrid")

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()

輸出內容如下所示:

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

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

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

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

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

len(df)

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

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

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

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

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

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

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

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

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

刪除數據后,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 入门教程的全部內容,希望文章能夠幫你解決所遇到的問題。

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