Jupyter Notebook¶
Overview¶
Jupyter Notebook 是一个开源的交互式计算环境,特别适合数据科学、机器学习、科学计算和教育领域。
其本质是一个 JSON 格式的“交互式文档”,前端(浏览器)负责展示,后端(kernel)负责执行代码,两者通过 WebSocket/HTTP 通信。
Jupyter Notebook 的主要作用在于,它能够让你在一个地方边写代码,边看结果,边记笔记。
Main Features¶
- 交互式编程:支持多种编程语言(Python、R、Julia、Scala等)
- 富文本支持:Markdown、HTML、LaTeX 数学公式
- 可视化:内联图表和图形显示
- 可重现性:代码和结果保存在同一文档中
- 易于分享:可以导出为多种格式(HTML、PDF、LaTeX等)
Core Component¶
- Notebook 文档:包含代码单元格和文本单元格的
.ipynb文件 - Kernel:执行代码的后端进程
- Web 界面:基于浏览器的交互式界面
Main Uses¶
- 数据科学:数据清洗、探索性数据分析、建模
- 机器学习:算法开发、模型训练、结果可视化
- 教育:交互式教程、作业提交
- 研究:实验记录、结果展示
- 原型开发:快速验证想法和概念
Installation¶
Basic Installation¶
# 安装 Jupyter
pip install jupyter
# 启动 Jupyter Notebook
jupyter notebook
# 或使用 JupyterLab(更现代的界面)
pip install jupyterlab
jupyter lab
Using Specific Kernel¶
# 安装特定内核
pip install ipykernel
# 将环境注册为 Jupyter 内核
python -m ipykernel install --user --name=myenv --display-name="Python (myenv)"
Combination with MkDocs¶
可使用插件 mkdocs-jupyter 使得 Jupyter Notebook 可以直接在基于MkDocs的文档网站中渲染:
Advantages¶
无缝集成:Notebook 可以直接在文档网站中渲染
保持交互性:支持代码执行和可视化
版本控制:
.ipynb文件可以很好地与 Git 配合使用统一管理:所有文档和代码在一个地方
Disadvantages¶
截至这篇笔记更新,该插件还没法很好地兼容MkDocs Material主题中所支持的标记语法、页面布局、移动端页面适配等相对影响笔记查阅体验的功能。
Configuration Example¶
Files to Include or Ignore¶
plugins:
- mkdocs-jupyter:
include: ["*.ipynb"] # Default: ["*.py", "*.ipynb"]
ignore: ["some-irrelevant-files/*.ipynb"]
Whether to Execute the Notebook before Conversion¶
plugins:
- mkdocs-jupyter:
execute: true # Default: False
# ignore the execution of some files (with glob matching)
execute_ignore:
- "my-secret-files/*.ipynb"
Configure Theme¶
plugins:
- mkdocs-jupyter:
theme: dark
theme:
name: material
palette:
scheme: slate
更多配置可参考插件的Readme
Code Example¶
In [1]:
Copied!
# Example: Simple Data Analysis
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# Create sample data
data = {
'x': np.random.randn(100),
'y': np.random.randn(100)
}
df = pd.DataFrame(data)
# Create scatter plot
plt.figure(figsize=(8, 6))
plt.scatter(df['x'], df['y'], alpha=0.6)
plt.title('Random Data Scatter Plot')
plt.xlabel('X Values')
plt.ylabel('Y Values')
plt.grid(True, alpha=0.3)
plt.show()
# Display data statistics
print("Data Statistics:")
print(df.describe(""))
# Example: Simple Data Analysis import pandas as pd import numpy as np import matplotlib.pyplot as plt # Create sample data data = { 'x': np.random.randn(100), 'y': np.random.randn(100) } df = pd.DataFrame(data) # Create scatter plot plt.figure(figsize=(8, 6)) plt.scatter(df['x'], df['y'], alpha=0.6) plt.title('Random Data Scatter Plot') plt.xlabel('X Values') plt.ylabel('Y Values') plt.grid(True, alpha=0.3) plt.show() # Display data statistics print("Data Statistics:") print(df.describe(""))