本教程面向非专业程序员——数据分析师、产品经理、运营、科研人员、财务、自媒体作者——只要你手里有一份 CSV/Excel 表格,想让它变成"会说话的图表和结论",却不想从零学 Python 语法。你将学会:安装 Claude Code、用 uv 建立可复现的 Python 项目、让 AI 自动推断数据结构、生成清洗脚本与可视化图表、输出一份可交付的分析报告。整个过程你几乎不写一行代码,而是用自然语言"指挥"一个项目感知(project-aware)的编码智能体完成。
与传统"装环境就劝退"的教程不同,本文把"环境"这件事也交给 Claude Code 来处理——这正是 agentic 编程的核心红利。
Claude Code 是一个跑在终端里的命令行工具(CLI)。安装它之前,先确认 Node.js 已就位。
安装 Node.js(任选其一):
# macOS(Homebrew)
brew install node
# Windows / Linux:到 nodejs.org 下载 LTS 安装包
# 或用 nvm(推荐,便于多版本切换)
nvm install --lts
安装 Claude Code 本体:
npm install -g @anthropic-ai/claude-code
预期结果:终端里输入 claude --version 能打印出版本号(当前为 2.x 系列),说明全局命令已就绪。
常见问题:
| 现象 | 原因与解决 |
|---|---|
command not found: claude |
npm 全局目录不在 PATH 中。运行 npm config get prefix,把 /bin 子目录加入 PATH |
| 权限错误 EACCES | 不要用 sudo。改用 nvm 管理 Node,或执行 npm config set prefix ~/.npm-global 后把该路径加入 PATH |
| 公司网络拉不动 npm | 设置镜像:npm config set registry https://registry.npmmirror.com |
数据分析项目的第一个坑,永远是依赖管理。这里推荐 uv——一个用 Rust 写的极速包管理器,比传统 pip+venv 快十倍以上,且能彻底避免"我电脑上能跑、你电脑上报错"的经典灾难。
安装 uv:
# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows (PowerShell)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
初始化项目骨架:
uv init sales-analysis
cd sales-analysis
预装数据分析三件套:
uv add pandas numpy matplotlib
关键技巧:建议在对话里明确告诉 Claude Code"用
uv add <包>来装包,不要直接改 pyproject.toml"。这样它每次都会拉取最新稳定版,而不是凭训练记忆写死一个可能过时的版本号。
预期结果:项目目录下生成 pyproject.toml、.python-version、uv.lock 和 main.py,依赖被锁定,可复现。
一个好习惯:在召唤 Claude 之前,先把项目结构搭好。Claude Code 会"看见"这个结构,并自然地把产物写到对应位置,而不是把图表乱丢在根目录。
手动建好目录:
mkdir -p src data figures tables
结构含义:
sales-analysis/
├── src/ # 源代码(清洗、分析脚本)
├── data/ # 原始数据与中间数据
├── figures/ # 生成的图表 PNG
├── tables/ # 汇总表格 CSV
└── pyproject.toml
启动 Claude Code:
claude
首次启动会要求你登录:Pro/Max 订阅用户走浏览器 OAuth;按量付费用户粘贴 API Key。Pro 订阅默认用 Sonnet 模型,对日常数据分析绰绰有余;Max 用户可用 /model 切换更强模型。
生成项目记忆文件:
/init
执行 /init 后,Claude 会扫描项目结构和你写过的说明,自动生成一份 CLAUDE.md。这份文件会被注入到你之后的每一条指令里,相当于给 AI 一份"项目说明书"。务必打开它审查一遍,确保约定正确。
一个适合数据分析项目的 CLAUDE.md 范例:
# 项目说明
本项目对 data/ 目录下的销售数据进行清洗与可视化分析。
# 约定
- 所有脚本放在 src/ 下,可独立运行
- 图表保存到 figures/,表格保存到 tables/
- 使用 uv 管理依赖:装包用 `uv add <pkg>`,运行用 `uv run python src/xxx.py`
- 数据源路径从 .env 的 DATA_PATH 读取,不要硬编码
- 图表风格:简洁、中文标签、300 DPI
数据分析项目最关键的一步,是确保 Claude Code 知道数据在哪、长什么样。有三种做法,按数据规模递进:
做法 A(小数据):直接把 CSV 拖进 data/ 目录。Claude 会自动看到文件名和内容,能直接读取分析。最省事。
做法 B(外部数据):数据在项目之外(如共享网盘),Claude 默认看不到。两种方案:
- 在 CLAUDE.md 里写明绝对路径
- 更干净的方式:用 .env + 环境变量
# 创建 .env(记得加进 .gitignore,别提交!)
echo 'DATA_PATH=/Users/yourname/Dropbox/finance-data' > .env
代码里用 python-dotenv 读取:
import os
from dotenv import load_dotenv
load_dotenv()
data_path = os.getenv("DATA_PATH")
做法 C(在线数据):数据在 API 或学术仓库里,直接让 Claude 写抓取代码,下载到 data/,保证可复现。
这是数据分析的黄金第一步,却被多数新手跳过。 不要一上来就让它画图,先让它推断数据结构(schema),并写成 Markdown 供你校对。
在 Claude Code 里输入:
请读取
data/下的 CSV 前 50 行,推断每一列的字段名、数据类型、是否含缺失值、可能的业务含义,把结论写到tables/schema.md,让我确认后再分析。
预期结果:Claude 会写一个临时探查脚本,调用 pandas 的 df.info()、df.head()、df.describe(),并把列含义整理成表格。这一步把"AI 对数据的理解"显式化,避免后续基于错误假设生成一堆废代码。
确认 schema 后,让它写清洗脚本。真实数据几乎都有"脏":重复行、日期格式混乱、金额带货币符号、空值。
请写
src/clean.py,完成以下清洗:删除完全重复行;把订单日期解析为标准 datetime;把销售额中的$和逗号去掉转为浮点数;客户地区缺失值填"未知";清洗后保存到data/sales_clean.csv。运行它并把执行结果告诉我。
Claude 会写出类似下面的代码并自动执行,遇到报错会自己读报错信息并修复(这就是 agentic 与普通补全的本质区别):
import pandas as pd
df = pd.read_csv("data/sales_raw.csv")
# 去重
df = df.drop_duplicates()
# 日期解析
df["订单日期"] = pd.to_datetime(df["订单日期"], errors="coerce")
# 金额清洗
df["销售额"] = (
df["销售额"].astype(str)
.str.replace(r"[\$,]", "", regex=True)
.astype(float)
)
# 缺失填充
df["客户地区"] = df["客户地区"].fillna("未知")
df.to_csv("data/sales_clean.csv", index=False)
print(f"清洗完成,共 {len(df)} 行")
清洗干净后,画图就是一句话:
用清洗后的数据,画三张图保存到 figures/:(1) 按月的销售额折线图;(2) 各地区销售额柱状图;(3) 销售额分布直方图。中文标签,配色简洁,300 DPI。
Claude 会用 matplotlib(或 seaborn)生成脚本并运行。产物是三张 PNG,路径在 figures/ 下。
最后让它把结论沉淀成文字:
基于 figures/ 的图表,写一份
REPORT.md:用 3-5 条要点总结销售趋势、最强/最弱地区、整体规模,并在每条要点后用 Markdown 引用对应图表路径。
这份 REPORT.md 配合图表,就是你交付给老板/同事的成品——全部由你用自然语言指挥完成。
下面是一个完整、自包含的示例,从无到有跑通。你可以逐段复制到终端执行。
1. 建项目并造一份示例数据(约 120 行):
uv init sales-demo && cd sales-demo
uv add pandas matplotlib python-dotenv
mkdir -p src data figures tables
让 Claude 生成示例数据,或自己粘一段:
# src/make_data.py
import pandas as pd
import numpy as np
np.random.seed(42)
regions = ["华东", "华南", "华北", "西南", "未知"]
dates = pd.date_range("2025-01-01", "2025-12-31", freq="D")
rows = []
for d in dates:
for _ in range(np.random.randint(1, 4)):
rows.append({
"订单日期": d.strftime("%Y/%m/%d"),
"客户地区": np.random.choice(regions, p=[.3,.25,.2,.2,.05]),
"销售额": f"${np.random.lognormal(7, .6):,.2f}",
})
pd.DataFrame(rows).to_csv("data/sales_raw.csv", index=False)
print("已生成 data/sales_raw.csv")
uv run python src/make_data.py
2. 启动 Claude Code 并一次性下达任务:
claude
在交互框输入这段"指挥词":
这是一个销售数据分析项目。请按以下步骤执行: 1. 读取 data/sales_raw.csv,把 schema 写到 tables/schema.md。 2. 写 src/clean.py:解析日期、清洗金额、填充缺失,输出 data/sales_clean.csv。 3. 写 src/analyze.py:按月销售额折线图、各地区柱状图、分布直方图,存 figures/。 4. 写 REPORT.md,3 条要点 + 图表引用。 用 uv run 执行脚本,报错自己修,全做完把 figures 里的图和 REPORT.md 内容给我看。
3. 预期产出:
sales-demo/
├── data/sales_clean.csv # 清洗后 ~300 行
├── figures/monthly_trend.png # 月度折线
├── figures/region_bar.png # 地区柱状
├── figures/sales_hist.png # 分布直方
├── tables/schema.md # 字段说明
└── REPORT.md # 结论报告
REPORT.md 会形如:
# 销售数据分析报告
- 全年销售额呈上升趋势,Q4 为旺季(见 figures/monthly_trend.png)
- 华东为最强区域,占约 30%;"未知"地区提示数据录入需治理(见 figures/region_bar.png)
- 销售额呈右偏对数正态分布,存在少量大额订单拉高均值(见 figures/sales_hist.png)
整个过程你没有手写任何 pandas 或 matplotlib 代码,只做了需求描述与结果校对——这就是 agentic CLI 的价值。
flowchart TD
A[安装 Node + Claude Code] --> B[uv init 建项目<br/>预装 pandas/matplotlib]
B --> C[建目录结构<br/>src data figures tables]
C --> D[claude 启动 + /init 生成 CLAUDE.md]
D --> E[准备数据<br/>data 目录 / .env / 在线抓取]
E --> F[让 Claude 推断 schema<br/>写 tables/schema.md 供校对]
F --> G[写清洗脚本 clean.py<br/>Claude 自动运行并修错]
G --> H[生成可视化<br/>figures/*.png]
H --> I[产出 REPORT.md<br/>要点 + 图表引用]
I --> J{满意?}
J -->|否| K[自然语言追加修改<br/>如换个配色/补个维度]
K --> H
J -->|是| L[交付]
| 问题 | 解决思路 |
|---|---|
| Claude 生成的图中文乱码(方块) | matplotlib 默认字体不含中文。让它设置 plt.rcParams['font.sans-serif']=['Arial Unicode MS'](Mac)或 SimHei(Win) |
| Claude 改不动包、报 ModuleNotFound | 强制要求用 uv run python xxx.py 而非裸 python,确保用项目虚拟环境 |
| 报错后 Claude 卡住不修 | 直接说"读上面的报错,分析原因并修改脚本重跑",或贴报错文本给它 |
| 大数据(几十万行)跑不动 | 让它改用 chunksize 分块读取,或加 dtype 指定列类型降内存 |
| 重复分析后产物混乱 | 在 CLAUDE.md 固定输出目录约定,禁止往根目录写文件 |
/init、/model、权限模式等权威说明,是查命令的第一手来源。uv.lock、虚拟环境与可复现构建。总体定位:最适合作为零基础学员的"第一份有产出的项目",避免抽象语法学习,让 AI 替学员扛起实现细节,学员专注业务洞察与结果验证。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
