首页 › tutorials › 零基础首项目:CSV数据分析

Claude Code 入门篇:用 Agentic CLI 完成第一个数据分析项目

概述

本教程面向非专业程序员——数据分析师、产品经理、运营、科研人员、财务、自媒体作者——只要你手里有一份 CSV/Excel 表格,想让它变成"会说话的图表和结论",却不想从零学 Python 语法。你将学会:安装 Claude Code、用 uv 建立可复现的 Python 项目、让 AI 自动推断数据结构、生成清洗脚本与可视化图表、输出一份可交付的分析报告。整个过程你几乎不写一行代码,而是用自然语言"指挥"一个项目感知(project-aware)的编码智能体完成。

前置条件

与传统"装环境就劝退"的教程不同,本文把"环境"这件事也交给 Claude Code 来处理——这正是 agentic 编程的核心红利。


步骤一:安装 Claude Code

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 建立 Python 项目

数据分析项目的第一个坑,永远是依赖管理。这里推荐 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 之前,先把项目结构搭好。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/,保证可复现。


步骤五:让 Claude 先"读懂数据"

这是数据分析的黄金第一步,却被多数新手跳过。 不要一上来就让它画图,先让它推断数据结构(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 固定输出目录约定,禁止往根目录写文件

延伸阅读


训练营适用性评估

总体定位:最适合作为零基础学员的"第一份有产出的项目",避免抽象语法学习,让 AI 替学员扛起实现细节,学员专注业务洞察与结果验证。


参考来源

  1. Claude Code for Data Analysis – Vincent Codes Finance — 系统讲解 Claude Code 数据分析工作流:uv 初始化、目录约定、CLAUDE.md、数据可达性与 MCP 扩展
  2. Data analysis with Claude Code: 500,000 rows without writing code – VelvetShark — 真实 50 万行 Excel 从清洗到报告的端到端实操,含可复制提示词与报错自愈过程
  3. anthropics/claude-code – GitHub — Claude Code 官方仓库,安装命令、CLI 标志位与最新特性权威来源
  4. Claude Code Cheat Sheet – ComputingForGeeks — 2.x 版本速查表:模型选择、斜杠命令、CLI 参数一览
  5. zebbern/claude-code-guide – GitHub — 从入门到进阶的命令、工作流与技巧合集,适合作为目录式参考资料

[!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 等场景全覆盖。

51学通信知识星球海报-扫码加入