用 Claude Code 进行数据分析
Claude Code作为一款程序员工具享有很好的声誉。它在数据分析方面同样表现出色。
我用它分析了数十年的伦敦天气记录,获得了一份包含详细图表的综合报告(如上图所示),并在伦敦发现了气候变化的真实证据。Claude编写并执行了加载数据和创建图表所需的代码,但所有这些都在后台运行——我完全不需要看代码。
我所要做的就是描述我的数据,解释我想了解什么,Claude Code就完成了其余的工作——分析、统计、图表、书面报告。全部。它从我这里需要的技能不是传统意义上的编程——我提出的每一个要求都是用英语。
数据来源:英国气象局历史站点数据,2026年4月下载。所有源自英国气象局的信息均受皇家版权保护,可在开放政府许可证条款下使用。
1、Claude与Claude Code
大多数人通过浏览器使用Claude,你大概也知道——你输入,它回应,对话保持在窗口中。这不算是一种不好的工作方式,但在我看来,使用Claude Code更好。它在你的电脑终端中运行,可以读取和理解数据文件和代码,编写和执行代码,检查结果并迭代——而且这一切都不需要你逐步微观管理每一步。你描述你想要什么,它自己想办法完成。
有两种方式告诉Claude你想要什么。显而易见的方式是通过命令行:"读取这个文件"、"编写那段代码"等。但第二种、也是更可靠的方式是通过CLAUDE.md——一份书面简报,一份你在会话开始前创建的英文文档。我使用的那份描述了数据并提出了我希望Claude回答的问题。惯例是使用Markdown格式——简单的语法,只有标题和要点。
你仍然可以对结果进行迭代——只需在Claude按照你的初始指令完成工作后,通过命令行要求它做更多的事情。
这意味着Claude Code从你这里需要的技能不是编程意义上的技术能力。而是清楚地描述问题和知道自己想要什么的能力。
我一直在尝试各种设置,在这个项目中,我使用的是Claude Code配合Ollama和Quen3.5,而不是Anthropic的LLM。我在如何免费使用Claude Code配合Ollama中解释了这种设置。在那篇文章中我使用的是Kimi LLM,但这里我使用的是Quen,所以启动命令是:
ollama launch claude --model quen3.5:cloud
cloud后缀意味着你不需要下载模型;相反,你使用的是Ollama云中的模型。Ollama为此提供了一个免费增值套餐,给你每日和每周的免费配额。这里涉及的工作轻松地适应每日配额。
你从终端窗口运行该命令,会看到类似这样的欢迎消息:
Claude已准备好接受你的命令!
2、任务
以下是我为这个任务编写的CLAUDE.md文件,它代表了我给Claude Code的完整简报。它不是代码,不是技术语法,也不是程序员会编写的规范。它是用Markdown格式的英文描述。
如果你之前没有接触过Markdown,你真正需要知道的就是#在主标题前面,两个#在二级标题前面(以此类推),-是一个要点。
# Historical weather analysis
## Dataset
- File: `heathrowdata.txt`
- The file approximates to a CSV file but has the following issues:
- The first 5 lines are text comments
- the column names are written over two rows. They are:
- yyyy, the year
- mm, the month
- tmax degC, the max temperature in a month
- tmin degC, the min temperature in a month
- af days, the number of days with an air frost in a month
- rain mm, the number of millimetres of rain in a month
- sun hours, the number of hours of sunshine in a month
- <un-named>, an extra column on later rows that mark the entries
as provisional
-
- columns are separated by a variable number of spaces
- null entries are represented by '---'
## Conventions
- Use pandas and matplotlib/seaborn only to code analysis and create charts
- Save all plots to `/outputs/figures/`
## Analysis goals
- Understand the trends in temperature and other weather data over time
- To create charts that show these trends
数据文件有现实世界中的杂乱——不一致的空格、跨两行的表头、用破折号标记的缺失值,以及后期条目中的临时数据标志。我不需要修复其中任何一项。我只需要描述它。
底部的分析目标非常模糊:了解趋势并创建图表。Claude Code推断出了其他一切——使用哪些统计方法、如何构建分析以及图表应该展示什么。
现在我们需要启动Claude,所以在提示符下我输入了:
❯ plan an EDA analysis of the data
Claude已经读取了CLAUDE.md文件,所以知道这是怎么回事。它回复:
嗯,看起来非常令人满意,所以我回复了:
> yes
Claude继续了对话,请求编写代码的权限,并总体上遵循了它的计划。然后它遇到了一个错误——我的错误。我疏忽了为Claude设置一个包含Python解释器和它运行代码所需库的工作环境。糟糕!
Claude提出了自己的解决方案,但由于我安装了UV包,我想用那个来创建一个具有适当库的虚拟环境。所以,我按中断了Claude,告诉它使用uv init来初始化环境,使用uv add来安装库。
一切顺利,它又开始了。除了批准它运行产生的代码(它打印出了它生成的所有代码——我没有看)之外,我不需要做任何其他事情。
它产出了什么
- 图表!一大堆我们不需要看的代码,因为……嗯,我们就是不需要看。
- 以及一个简短的发现文字总结。
这些都很好,但我想要一份包含Claude辛苦制作的所有精彩图表的报告。所以,我在命令行提出了这个要求。
❯ write a report that includes the charts generated in an markdown file
Claude生成了一份结构化的分析报告:执行摘要、数据质量评估、带有统计速率的趋势分析、相关性矩阵、分布分析,以及一个标记了数据无法告诉我们的内容并建议下一步的局限性部分。
超过300行文字和9张图表。
主要发现是:希思罗机场的气温自1948年以来上升了约2.3°C——速率为每十年0.3°C。空气霜冻天数在同一时期减少了约24天。降雨没有显示出显著趋势,这本身就是一个发现(排除了我可能假设的某些东西)。
自动生成了九张图表,涵盖了从十年温度对比到相关性热力图的所有内容。这些在我的简报中除了"创建展示这些趋势的图表"之外都没有被具体指定。
3、可以改进的地方
3.1 发现
Claude做得不错,但下次我需要做得更好。我对想要的输出不够具体,所以Claude包含了一些不重要的内容。看看这个相关性矩阵。
没有什么问题,只是我不太需要被告知月最高温度与最低温度正相关;当然,两者在一年中会一起上下波动。也不需要明说温度和霜冻有关,或者雨水和日照有关(如果下雨,通常就不晴朗!)。
然而,这不是流程的过错;这是人类(我)的失败。我需要对我正在寻找什么以及期望在报告中看到什么更加具体。
Claude捕捉到了气温上升和霜冻天数减少,并将它们与气候变化联系起来。我本可以对此更加具体,也许要求它寻找更多证据,比如风暴强度的增加。
这是一个很好的练习:它表明你需要知道自己想要什么。但它也是一个很好的起点,用于精确地细化那到底是什么。
3.2 代码环境
为了生成图表,Claude使用Python库:Pandas用于数据操作,Matplotlib用于绘制图表。因此,尽管我们自己不需要了解任何代码,Claude仍然需要一个编程环境来工作。
最好的方法是使用虚拟环境——一个不会干扰同一台计算机上其他编程工作的编程环境。Claude发现不存在这样的环境,所以我不得不介入,提供如何创建一个的指令。
我使用一个叫做UV的产品来实现这一点,所以本可以在CLAUDE.md中包含一个这样的部分:
## Programming Conventions
- Use the UV tool to initialne a virtual environment with Python version 3.13
- Use pandas and matplotlib/seaborn only to code analysis and create charts.
- Use 'UV add <library>' to install the required libraries.
- Save all plots to `/outputs/figures/`
- Save all code to `/outputs/code/`
3.3 有效性
需要进行全面审查以确保分析是正确或有效的,可以被信任用于其他工作。从表面上看,它看起来不错。
而且,我不得不承认,我只运行了一次。如果我再做一次,会得到相同的结果吗?人们期望并希望如此,但这需要验证。
3.4 CLAUDE.md
坦率地说,我对这次实验的期望不高,在指令上也没有投入太多精力。我对数据的描述足够好;我应该添加编程环境信息,分析目标确实应该更明确地指定(尽管让它们相当开放可能会让Claude想出你最初没想到的东西)。
4、结束语
我认为这是一个好的开始,我可以轻松地从上次停下的地方继续对话,产生更有趣的发现。
任何人都能做到吗?基本上可以。Claude Code从我这里需要的不是编程技能。它需要三样东西:足够了解你的数据以描述其怪异之处,知道该问什么问题,以及能够判断答案是否合理。
最后一点很重要。领域知识很重要——你需要能够理解产生的结论或建议,以知道它们是否合理。
原文链接: Data Analysis with Claude Code — it's not just for programmers
汇智网翻译整理,转载请标明出处