数据挖掘(二) ----- Jupyter Notebook使用示例和常见问题

一、Jupyter Notebook 简介

Jupyter Notebook 是一个开源的 Web 应用程序,允许创建和共享包含实时代码、方程式、可视化和文本的文档。它广泛应用于数据清理和转换、数值模拟、统计建模、数据可视化、机器学习等领域。

二、环境安装与配置

2.1 安装方法

bash 复制代码
# 使用pip安装
pip install jupyter notebook

# 或使用conda安装(推荐)
conda install jupyter notebook

2.2 启动 Notebook

bash 复制代码
# 基本启动
jupyter notebook

# 指定端口启动
jupyter notebook --port 8888

# 不自动打开浏览器
jupyter notebook --no-browser

# 指定工作目录
jupyter notebook --notebook-dir=/path/to/your/notebooks

三、基本使用示例

3.1 创建新 Notebook

  1. 启动 Jupyter Notebook 后,在 Web 界面点击右上角"New" → "Python 3"
  2. 系统会创建一个新的 Notebook 文件(.ipynb 后缀)

3.2 基本单元格操作

python 复制代码
# 代码单元格示例
print("Hello, Jupyter Notebook!")
python 复制代码
# Markdown单元格示例(按M键转换为Markdown)
# 一级标题
## 二级标题
### 三级标题

- 列表项1
- 列表项2

**粗体文本** *斜体文本*

3.3 常用快捷键

快捷键 功能 模式
Ctrl+Enter 运行当前单元格 命令/编辑
Shift+Enter 运行当前单元格并跳转到下一个 命令/编辑
Alt+Enter 运行当前单元格并在下方插入新单元格 命令/编辑
Esc 进入命令模式 -
Enter 进入编辑模式 -
A 在上方插入单元格 命令模式
B 在下方插入单元格 命令模式
D+D 删除单元格 命令模式
Z 撤销删除 命令模式
M 转换为Markdown单元格 命令模式
Y 转换为代码单元格 命令模式
Shift+M 合并选中的单元格 命令模式

3.4 数据可视化示例

python 复制代码
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

# 创建示例数据
x = np.linspace(0, 10, 100)
y = np.sin(x)

# 绘制图形
plt.figure(figsize=(10, 6))
plt.plot(x, y, label='sin(x)', color='blue', linewidth=2)
plt.title('正弦函数示例')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.legend()
plt.grid(True)
plt.show()

3.5 数据操作示例

python 复制代码
# 创建示例DataFrame
data = {
    '姓名': ['张三', '李四', '王五', '赵六'],
    '年龄': [25, 30, 35, 28],
    '城市': ['北京', '上海', '广州', '深圳'],
    '工资': [50000, 60000, 55000, 65000]
}

df = pd.DataFrame(data)
df
python 复制代码
# 数据分析
print("数据统计信息:")
print(df.describe())

print("\n平均工资:", df['工资'].mean())
print("最大年龄:", df['年龄'].max())

四、常见问题与解决方案

4.1 启动问题

问题1:Jupyter Notebook 无法启动

bash 复制代码
# 解决方案:
# 1. 检查端口是否被占用
jupyter notebook --port 8889

# 2. 清除配置文件
jupyter notebook --generate-config
# 或删除 ~/.jupyter 文件夹重新配置

问题2:导入包时出现 ModuleNotFoundError

python 复制代码
# 解决方案:在Notebook中安装包
!pip install package_name

# 或使用魔法命令
%pip install package_name

4.2 运行时问题

问题3:内核崩溃或重启

python 复制代码
# 解决方案:
# 1. 重置内核:Kernel → Restart
# 2. 清理内存
import gc
gc.collect()

# 3. 限制内存使用
import resource
resource.setrlimit(resource.RLIMIT_AS, (4 * 1024**3, -1))  # 限制4GB

问题4:长时间运行任务

python 复制代码
# 使用后台运行
from IPython.lib import backgroundjobs as bg
jobs = bg.BackgroundJobManager()

# 或使用异步执行
%load_ext autoreload
%autoreload 2

4.3 显示问题

问题5:图表显示不完整

python 复制代码
# 解决方案:
import matplotlib.pyplot as plt
%matplotlib inline
# 或
%matplotlib notebook

# 设置显示选项
pd.set_option('display.max_rows', 500)
pd.set_option('display.max_columns', 500)
pd.set_option('display.width', 1000)

4.4 文件操作问题

问题6:文件路径问题

python 复制代码
import os

# 获取当前工作目录
current_dir = os.getcwd()
print("当前目录:", current_dir)

# 更改工作目录
os.chdir('/path/to/your/directory')

# 列出文件
!ls -la

五、使用技巧

5.1 魔法命令

python 复制代码
# 时间测量
%time sum(range(1000000))

%timeit sum(range(1000000))

%%time
total = 0
for i in range(1000000):
    total += i
python 复制代码
# 系统命令
!pip list  # 列出已安装包
!ls -la    # 列出文件
!pwd       # 显示当前路径
python 复制代码
# 自动重载模块
%load_ext autoreload
%autoreload 2

5.2 插件安装

bash 复制代码
# 安装插件管理器
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user

# 启用常用插件
jupyter nbextension enable code_prettify/code_prettify
jupyter nbextension enable execute_time/ExecuteTime
jupyter nbextension enable spellchecker/main

5.3 主题设置

bash 复制代码
# 安装主题
pip install jupyterthemes

# 查看可用主题
jt -l

# 设置主题
jt -t onedork -fs 12 -cellw 90%

六、导出与分享

6.1 导出格式

bash 复制代码
# 导出为HTML
jupyter nbconvert --to html notebook.ipynb

# 导出为PDF(需要安装LaTeX)
jupyter nbconvert --to pdf notebook.ipynb

# 导出为Markdown
jupyter nbconvert --to markdown notebook.ipynb

# 导出为Python脚本
jupyter nbconvert --to python notebook.ipynb

6.2 导入CSDN等博客平台

  1. 导出为Markdown
bash 复制代码
jupyter nbconvert --to markdown notebook.ipynb
  1. 调整图片路径
  • 默认情况下图片会保存在 notebook_files/ 文件夹
  • 上传图片到博客平台的图床
  • 替换Markdown中的图片链接
  1. 优化内容格式
  • 确保代码块有正确的语言标记
  • 检查数学公式渲染
  • 调整标题层级结构

6.3 分享到GitHub

  1. .ipynb 文件推送到GitHub仓库
  2. GitHub会自动渲染Notebook
  3. 可以使用 nbviewer 进行在线查看

七、最佳实践

7.1 代码组织

python 复制代码
# 模块化导入
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# 设置全局样式
plt.style.use('seaborn-whitegrid')
%matplotlib inline
pd.set_option('display.max_columns', 50)

7.2 版本控制

bash 复制代码
# 安装nbstripout清理输出
pip install nbstripout

# 设置git过滤器
nbstripout --install

7.3 调试技巧

python 复制代码
# 使用pdb调试
import pdb

def debug_function():
    pdb.set_trace()  # 设置断点
    # 你的代码

# 或使用魔术命令
%debug
%pdb

7.4 性能优化

python 复制代码
# 1. 使用矢量化操作替代循环
import numpy as np

# 慢
result = []
for i in range(1000000):
    result.append(i * 2)
    
# 快
result = np.arange(1000000) * 2

# 2. 使用合适的数据类型
df['column'] = df['column'].astype('category')

# 3. 内存优化
df = pd.read_csv('large_file.csv', chunksize=10000)

八、扩展功能

8.1 JupyterLab

bash 复制代码
# 安装JupyterLab
pip install jupyterlab

# 启动
jupyter lab

8.2 JupyterHub(多用户)

bash 复制代码
# 安装
pip install jupyterhub

# 配置多用户环境
# 参考官方文档进行详细配置

8.3 内核管理

bash 复制代码
# 查看可用内核
jupyter kernelspec list

# 安装新内核(如Python2)
python2 -m pip install ipykernel
python2 -m ipykernel install --user

# 删除内核
jupyter kernelspec remove kernelname

九、故障排除清单

  1. 启动问题

    • 检查Python环境
    • 检查端口占用
    • 查看日志文件
  2. 导入错误

    • 检查包是否安装
    • 检查Python路径
    • 重启内核
  3. 显示问题

    • 检查前端设置
    • 更新浏览器
    • 清除缓存
  4. 性能问题

    • 监控内存使用
    • 优化代码
    • 使用适当的数据结构
  5. 保存问题

    • 检查文件权限
    • 检查磁盘空间
    • 手动备份重要文件

十、学习资源

  1. 官方文档: https://jupyter.org/documentation
  2. Jupyter Notebook Gallery: https://github.com/jupyter/jupyter/wiki/A-gallery-of-interesting-Jupyter-Notebooks
  3. DataCamp教程: https://www.datacamp.com/community/tutorials/tutorial-jupyter-notebook
  4. Real Python教程: https://realpython.com/jupyter-notebook-introduction/

总结: Jupyter Notebook 是一个强大的交互式计算环境,通过掌握上述技巧和解决方案,可以大大提高工作效率。建议定期备份重要Notebook,并探索 JupyterLab 等更先进的替代工具以获得更好的开发体验。

相关推荐
NAGNIP10 小时前
一文搞懂深度学习中的通用逼近定理!
人工智能·算法·面试
冬奇Lab11 小时前
一天一个开源项目(第36篇):EverMemOS - 跨 LLM 与平台的长时记忆 OS,让 Agent 会记忆更会推理
人工智能·开源·资讯
冬奇Lab11 小时前
OpenClaw 源码深度解析(一):Gateway——为什么需要一个"中枢"
人工智能·开源·源码阅读
AngelPP15 小时前
OpenClaw 架构深度解析:如何把 AI 助手搬到你的个人设备上
人工智能
宅小年15 小时前
Claude Code 换成了Kimi K2.5后,我再也回不去了
人工智能·ai编程·claude
九狼15 小时前
Flutter URL Scheme 跨平台跳转
人工智能·flutter·github
ZFSS15 小时前
Kimi Chat Completion API 申请及使用
前端·人工智能
天翼云开发者社区16 小时前
春节复工福利就位!天翼云息壤2500万Tokens免费送,全品类大模型一键畅玩!
人工智能·算力服务·息壤
知识浅谈17 小时前
教你如何用 Gemini 将课本图片一键转为精美 PPT
人工智能
Ray Liang17 小时前
被低估的量化版模型,小身材也能干大事
人工智能·ai·ai助手·mindx