跳转至

A.1   编程与统计计算环境

本附录目标

  • 装好 Python + 科学计算栈
  • VS Code / Jupyter 工作流
  • 选好 GPU / 云 (深度学习)

A.1.1   推荐发行版

选项 适合 备注
Miniconda 大多数人 轻量, 灵活管虚拟环境
Anaconda 完全新手 一键带 GUI, 体积大
uv / pixi 高级用户 极快, Rust 写的现代包管理
Docker 生产 / 团队 完全复现环境
Colab / Kaggle 零配置入门 免费 GPU

下载: https://docs.conda.io/en/latest/miniconda.html


A.1.2   创建虚拟环境

conda create -n stat python=3.11 -y
conda activate stat

# 基础科学栈
pip install numpy pandas scipy matplotlib seaborn jupyterlab

# 统计与机器学习
pip install statsmodels scikit-learn xgboost lightgbm

# 贝叶斯
pip install pymc arviz

# 生存分析
pip install lifelines

# 因果推断
pip install dowhy econml

# 深度学习 (CPU)
pip install torch torchvision torchaudio

# 深度学习 (GPU/CUDA 12.1)
# pip install torch --index-url https://download.pytorch.org/whl/cu121

# Transformer / LLM
pip install transformers datasets accelerate sentence-transformers

提示: 国内可加 -i https://pypi.tuna.tsinghua.edu.cn/simple 加速。


A.1.3   工作目录建议

project/
├── data/ # 原始数据 (大文件不进 git)
├── notebooks/ # 探索性 .ipynb
├── src/ # 复用代码
│ ├── data.py
│ ├── model.py
│ └── utils.py
├── tests/
├── reports/ # 图、 报告
├── requirements.txt # 或 pyproject.toml
└── README.md

A.1.4   VS Code 配置

推荐插件:

  • Python (Microsoft) — 核心
  • Jupyter — Notebook 集成
  • Pylance — 类型检查
  • Ruff — lint+format (替代 flake8/black)
  • Even Better TOML
  • GitLens
  • GitHub Copilot — AI 补全

settings.json:

{
  "python.defaultInterpreterPath": "~/miniconda3/envs/stat/bin/python",
  "[python]": {
    "editor.defaultFormatter": "charliermarsh.ruff",
    "editor.formatOnSave": true
  }
}

A.1.5   Jupyter 高效技巧

快捷键 作用
Shift+Enter 运行 + 下一格
Ctrl+Enter 运行原地
A / B 上/下插格 (命令模式)
D D 删格
M / Y Markdown / Code
Esc 命令模式
?函数 查 docstring
%timeit ... 计时
%matplotlib inline 内嵌图
%%writefile foo.py 写文件

A.1.6   pandas 常用速查

import pandas as pd
df = pd.read_csv('data.csv')
df.head(); df.info(); df.describe()
df.isna().sum()
df.groupby('cat').agg({'x': ['mean', 'std'], 'y': 'sum'})
df.merge(other, on='key', how='left')
df.pivot_table(index='a', columns='b', values='v', aggfunc='mean')
df.assign(z=lambda d: d.x / d.y)
df.query("age > 18 and city in ['上海','北京']")

A.1.7   matplotlib / seaborn 速查

import matplotlib.pyplot as plt, seaborn as sns
sns.set_theme(style='whitegrid')
fig, ax = plt.subplots(figsize=(7, 4))
sns.scatterplot(data=df, x='x', y='y', hue='group', ax=ax)
ax.set_title('Title'); ax.set_xlabel('x'); ax.set_ylabel('y')
fig.tight_layout(); fig.savefig('out.png', dpi=150)

中文支持:

plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'PingFang SC']
plt.rcParams['axes.unicode_minus'] = False

A.1.8   GPU 与云推荐

平台 用途
Google Colab 免费 T4, Pro 有 A100/L4
Kaggle 30 小时/周 P100/T4 免费
AutoDL / 揽睿 / 矩池云 国内便宜 GPU 租用
RunPod / Vast / Lambda 国外按需
AWS / GCP / Azure 企业级
Modal / Replicate Serverless GPU

本地: NVIDIA 30/40 系列 16GB+ 显存即可玩中小模型 + LoRA。


A.1.9   Git / GitHub

git init
git add . && git commit -m "init"
git branch -M main
git remote add origin git@github.com:user/repo.git
git push -u origin main

.gitignore:

__pycache__/
*.pyc
.venv/
data/
*.parquet
*.csv
.ipynb_checkpoints/
.env
runs/
wandb/

A.1.10   常见坑

问题 解法
matplotlib 中文乱码 设字体 (上面)
numpy 2.x 报 trapz 改用 np.trapezoid
pip 装慢 用清华/阿里源
jupyter 内核找不到 python -m ipykernel install --user --name stat
Windows 路径斜杠 pathlib.Path
LLM CUDA 显存不够 bitsandbytes 4-bit 量化 / 梯度检查点
中文文件编码报错 encoding='utf-8'; Windows 下 chcp 65001

A.1.11   推荐学习资源

  • 官方文档 : numpy / pandas / scikit-learn / pytorch
  • 网课 : Andrew Ng (Coursera), Karpathy (YouTube), 李沐 (B 站)
  • 博客 : distill.pub, Lil'Log, Sebastian Raschka
  • 论文 : arXiv (cs.LG, stat.ML)
  • 社区 : Stack Overflow, Cross Validated, GitHub

A.1.12   下一步

  • 下节 §A.2 数学速查, 复习高数 / 线代 / 概率核心。