Jupyter Notebook 是計(jì)算和文檔一體化的編程筆記本,它不只是把 IPython 放進(jìn)瀏覽器而已,還能將代碼、文本、表格、公式以及圖形都集成在同一網(wǎng)頁(yè)之中,作為連接與整合多種資源的在線門戶。如果放到公網(wǎng)主機(jī)上,就能在任何地方隨時(shí)使用,是進(jìn)行數(shù)據(jù)處理的必備神器。項(xiàng)目官網(wǎng) https://jupyter.org/

Jupyter Notebook 可通過(guò) Anaconda Navigator 啟動(dòng),程序在后臺(tái)運(yùn)行并自動(dòng)用瀏覽器打開主頁(yè)面,顯示當(dāng)前用戶目錄的內(nèi)容——更快捷的啟動(dòng)方式是直接輸入以下命令,這樣主頁(yè)面顯示的將是當(dāng)前目錄(按 Ctrl+C 結(jié)束運(yùn)行):
jupyter notebook
Jupyter Notebook 每次啟動(dòng)會(huì)隨機(jī)生成一個(gè)憑據(jù)用作安全驗(yàn)證,你可以輸入以下命令設(shè)置一個(gè)登錄密碼以方便使用:
jupyter notebook password
Jupyter Notebook 專用文件格式為 IPython 筆記本(.ipynb),點(diǎn)擊主頁(yè)面右上方的“新建”按鈕即可創(chuàng)建筆記本。筆記本頁(yè)面主要由代碼單元格組成,一個(gè)代碼單元格就是一次 IPython 交互,你可以在其中輸入 Python 程序并運(yùn)行,運(yùn)行結(jié)果將在頁(yè)面中顯示;另一種常用組件是標(biāo)記單元格,其中可以使用 MarkDown 標(biāo)記編寫帶格式的文檔,運(yùn)行標(biāo)記單元格將顯示排版后的效果——MarkDown 標(biāo)記非常簡(jiǎn)單,這里列出常用的幾種,更多介紹可參閱 http://www.markdown.cn/
# 一級(jí)標(biāo)題
## 二級(jí)標(biāo)題
正文段落
正文段落
- 列表
- 列表
1. 編號(hào)列表
2. 編號(hào)列表
[鏈接](abc.ipynb)

在筆記本頁(yè)面中可以使用熱鍵進(jìn)行快捷操作,主要有下面這些:
- H 顯示熱鍵列表
- A/B 在上/下插入單元格
- M/Y 改為標(biāo)記/代碼單元格
- Enter/Esc 進(jìn)入/退出編輯單元格
- Tab/Shift+Tab 代碼補(bǔ)全/提示
- Ctrl+Enter 運(yùn)行單元格
- S 保存筆記內(nèi)容
在主頁(yè)面中還可以新建文件夾和文本文件,或是打開終端窗口輸入命令,例如安裝第三方包、運(yùn)行腳本文件等等。下面讓我們來(lái)實(shí)際練習(xí)一下:這個(gè)簡(jiǎn)單的數(shù)據(jù)分析示例是統(tǒng)計(jì)在之前練習(xí)項(xiàng)目的所有 Python 程序代碼中各個(gè)關(guān)鍵字的出現(xiàn)次數(shù),結(jié)果存到一個(gè)字典。程序引入了兩個(gè)第三方包——用 wordcloud 根據(jù)頻度字典生成詞云圖,再用 matplotlib 顯示在頁(yè)面中(Anaconda 默認(rèn)已安裝后者,只需再裝前者即可)
"""練習(xí)項(xiàng)目源碼中Python關(guān)鍵字出現(xiàn)次數(shù)統(tǒng)計(jì)
先克隆源碼到當(dāng)前目錄 https://gitee.com/freesand/pyStudy.git
"""
import os
import re
from keyword import kwlist
import matplotlib.pyplot as plt # 繪圖第三方包
from wordcloud import WordCloud # 詞云第三方包
folder = "pyStudy"
kwdict = {}
po = re.compile(r'\W+') # 非單詞類字符
# 遍歷目錄樹逐個(gè)處理Python源碼文件
for foldername, subfoldername, filenames in os.walk(folder):
for filename in filenames:
if filename.endswith('.py') or filename.endswith('.pyw'):
with open(os.path.join(foldername, filename)) as file:
for line in file: # 逐行處理文本
line = po.sub(' ', line) # 清理非單詞類字符
for word in line.split(): # 文本拆分為單詞
if word in kwlist: # 如為關(guān)鍵字則更新結(jié)果字典
kwdict.setdefault(word, 0)
kwdict[word] += 1
# 排序輸出關(guān)鍵字頻度
result = sorted(kwdict.items(), key=lambda i: i[1], reverse=True)
cnt = 0
for k, v in result:
print(f"{k:>8} {v:3}", end=" ")
if cnt % 5 == 4:
print()
cnt += 1
# 根據(jù)關(guān)鍵字頻度生成詞云圖
wc = WordCloud(background_color='white', width=1000, height=600)
wc.generate_from_frequencies(kwdict)
plt.figure(figsize=(10, 6))
plt.imshow(wc)
plt.axis("off")
plt.show()

程序放入代碼單元格運(yùn)行即可輸出結(jié)果,可以看到練習(xí)項(xiàng)目中出現(xiàn)的關(guān)鍵字共有 32 個(gè),其中 if、def、import 最為常見(jiàn)(還有三個(gè)從未用過(guò) del、finally、nonlocal)
如果想公開分享自己的筆記本,放到 GitHub 即可直接顯示,不過(guò)渲染速度比較慢,推薦專用查看器 nbviewer https://nbviewer.jupyter.org/
歡迎查看我發(fā)布的筆記本 https://github.com/silkriver/pynote
——編程原來(lái)是這樣……