快速入門 Jupyter notebook

2021-03-02 數據分析1480

原文連結: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 ,兩個都是非常重要的術語:

單元(Cells)

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

下圖展示了一個簡單的例子,第一行 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 查看。下面簡單介紹一些快捷鍵:

命令模式下:

在 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 後,上方會出現一行選項,包括:

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

注意,關閉 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()

輸出內容如下所示:

通過查看,我們了解到每行就是一個公司在某一年的數據,然後總共有 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,這部分例子展示了如何分析探索數據,繪製數據的圖表。

參考

相關焦點

  • 為jupyter notebook添加目錄(Jupyter安裝拓展nbextensions)
    notebook吧,現在的我算是半個jupyter notebook的愛好者吧,主要是它可以與markdown結合,將前言信息、分析用的code、圖表、展現的結論等信息都可以即時記錄,不用多個文檔間切換記錄。
  • Jupyter Notebook 使用小技巧
    它可以被用於快速測試,作為報告工具,甚至作為複雜的學習材料在在線課程中使用。數據科學愛好者 Shadab Hussain 分享了 Jupyter Notebook 使用的一些小技巧。所以在這個博客裡,我要列出一些關於它的快捷方式,魔術命令和 nbextensions。
  • 上手jupyter notebook神器
    安裝完成後,直接在終端執行 jupyter notebook 或 jupyter lab 命令啟動。更改默認工作目錄想要修改 Jupyter Notebook 那些默認的配置選項,就需要在配置文件 jupyter_notebook_config.py 中修改相應配置選項的屬性。
  • jupyter notebook 一個編程交互式的記事本
    ;那麼如何引入jupyter這個組件呢1、首先你的計算機得要有python環境;2、安裝jupyter就和python安裝其他組件一樣:pip install jupyter即可同理安裝jupyternotebook也是一樣只需要把jupyter包名換掉就可以了
  • 一款容易上手jupyter notebook神器
    安裝完成後,直接在終端執行 jupyter notebook 或 jupyter lab 命令啟動。更改默認工作目錄想要修改 Jupyter Notebook 那些默認的配置選項,就需要在配置文件 jupyter_notebook_config.py 中修改相應配置選項的屬性。
  • Jupyter Notebook介紹、安裝及配置教程
    :PS如果失敗說明jupyter的環境變量沒有配置或者python -m IPython notebook還有(啟動服務但不打開瀏覽器)jupyter notebook --no-browser執行命令之後,在終端中將會顯示一系列
  • jupyter notebook在線平臺和教程
    jupyter logo很多同學都在了解學習python過程中,都聽過jupyter和jupyter notebook的大名,但默認的python安裝是不包含jupyter的,因此很多人還不了解jupyter是幹什麼用的
  • Python安裝Jupyter Notebook配置使用教程
    通過 pip 安裝:pip install jupyter安裝成功提示有:jupyter、jupyter-client、jupyter-console、jupyter-core。配置Jupyter notebook目錄路徑安裝完成先不要啟動,先配置目錄路徑。要不然默認打開和保存Jupyter notebook文件目錄在C盤。
  • Jupyter NoteBook 安裝以及常用配置
    命令行啟動在命令行中輸入jupyter notebook這個就使用了我之前設置的啟動目錄,所以我一般用命令行啟動,比較好控制啟動目錄。3. 啟動並臨時設置工作目錄jupyter notebook .# 設置當前目錄為工作目錄,並啟動jupyter notebookjupyter notebook path # 設置 path 目錄為工作目錄,path可以為任意目錄,但需要注意 Windows和Linux關於目錄分隔符的區別Jupyter設置生成配置文件在命令行中輸入jupyter notebook
  • Jupyterlab:超強的下一代Jupyter Notebook
    Jupyterlab 的基本理念是將經典 notebook 中的所有功能以及新特性整合在一起。如果您對Jupyter Lab完全不熟悉,可以直接從頭開始閱讀本文。但是,如果您已經開始使用Jupyterlab 並且希望了解進階功能,請跳過前四部分並直接跳到 第5部分。當然,請確保您使用的是最新版本。
  • 數據科學和機器學習,Jupyter Notebook入門指南
    3. 入門4. Jupyter Notebook的魔術命令5. 不僅限於Python6. Jupyter Notebook的交互式控制面板7.#Python3用戶不要跑pip3 install jupyter如果還是有疑問,請看官方文檔(英)、官方文檔翻譯(中)。
  • 一分鐘讀懂Jupyter Notebook入門手冊
    安裝完畢之後,選擇Git bash並打開在打開的Git bash中,輸入jupyter notebook,然後啟動jupyter,就可以發現是中文版本了。
  • 大神教小白搭建Jupyter Notebook環境
    在Pycham中只能運行一共py文件,而在Jupyter notebook可以運行一行代碼就可以了。2 、環境搭建你可以直接是通過 pip 命令安裝。pip install jupyter你也可以下載anaconda3、 conda常見命令conda不僅可以方便安裝,更新,卸載工具包,而且安裝時能自動安裝相應的依賴包。
  • 樹莓派打造python在線編程工具Jupyter Notebook
    樹莓派安裝docker以及簡單使用這次介紹一個python在線ide工具jupyter Notebook,也是用docker安裝的。安裝jupyter notebook,整體上還是很簡單的就是,就是設置密碼有一個小坑。
  • Jupyter Notebook 的 28 個技巧(下)
    jupyter-notebook-latexMarkdown 在 notebook 中是很重要的一部分內容,所以不要忘記去使用它豐富的表現能力。19.pip install https://github.com/ipython-contrib/jupyter_contrib_nbextensions/tarball/master !pip install jupyter_nbextensions_configurator !jupyter contrib nbextension install --user !
  • Jupyter Notebook的三大短板,都被這個新工具補齊了
    可謂機器學習入門進階研究之神器。這個工具支持pypi.安裝,代碼是這樣的:upytext from pippip install jupytext --upgrade# Append this to .jupyter/jupyter_notebook_config.py
  • Jupyter Notebook——也許你總在使用她,但也許你從未嘗試過去了解她?
    點擊這裡你可以查看jupyter notebook支持的所有語言分享便捷:可以使用電子郵件、Dropbox、GitHub和Jupyter Notebook Viewer與他人共享。python和jupyter  notebook。
  • Jupyter Notebook作圖教程
    Jupyter Notebook和模塊安裝Jupyter Notebook的運行依賴Python環境,可以支持window和Linux下,我們建議使用最新的Python 3.6版本,在安裝Python 3.6和pip包管理器之後就可以通過pip安裝:pip install jupyter
  • 15個應該掌握的Jupyter Notebook 使用技巧
    計算單元的執行時間我們可以在一個jupyter notebook單元的開頭使用%%time命令來計算執行該單元的時間。2. 進度條可以使用python外部庫創建進度條,它可以實時更新代碼運行的進度。它讓用戶知道正在運行的代碼腳本的狀態。你可以在這裡獲得相關的庫Github庫。
  • Python學習|Anaconda、Jupyter Notebook、pycharm安裝使用詳解
    6.2 jupyter notebook 使用6.2.1 打開 jupyter notebook打開 Anaconda prompt ,輸入 jupyter notebook(不要直接在開始菜單文件夾那裡點擊 Jupyter Notebook 打開)