AI数据分析实战指南
基于通义千问、DeepSeek等国内AI工具的数据分析教程
适用对象:数据记者、数据分析师、研究人员
一、为什么需要AI数据分析
传统的Excel分析流程通常是这样的:
- 打开Excel,导入数据
- 手动筛选、排序、透视
- 发现问题后,重新调整公式
- 重复上述步骤多次
整个过程可能需要1-2小时,而且容易出错。
现在用AI助手,流程变成:
- 把数据丢给AI
- 说"帮我看看有什么有趣的"
- AI自动发现异常、趋势、关联
- 5分钟内拿到初步分析报告
关键区别:AI帮你快速完成"探索性分析",让你把精力集中在真正有价值的发现上。
二、理解Coding Agent:AI数据分析的核心机制
2.1 什么是Agent?
Agent是一个自动化工作流框架,工作流程如下:
用户指令 → Agent框架 → LLM思考 → 选择工具 → 执行工具 → 返回结果 → LLM评估 → 下一步
↑_____________________________________________|
循环直到完成
普通AI对话:你说一句,它回一句
Agent模式:你给一个目标,它自动循环执行,直到完成任务
2.2 Coding Agent的核心能力
Coding Agent的核心能力是执行循环:
写代码 → 运行 → 看错误 → 修复 → 再运行 → 检查结果 → 重复
这个循环让AI从"文本生成器"变成"问题解决者"。
实际意义:
- 模型生成的代码第一次运行失败?AI会自己看错误信息修复
- 数据格式不对?AI会尝试不同的解析方法
- 查询结果不理想?AI会调整SQL重新查询
这就是AI数据分析的真正威力:它不是一次性生成代码就结束,而是自己迭代直到问题解决。
2.3 模型能力的演进
- 2022年:生成式AI开始展现编程能力
- 2025年底:模型改进显著提升Coding Agent能力
- 2026年:AI数据分析成为记者和研究人员的标配工具
AI数据分析能力在快速进化。定期尝试新版本的模型,以前做不到的事情,现在可能已经可以了。
三、开放探索 vs 定向查询
3.1 定向查询(基础用法)
"哪一年收入增长最快?"
"食品支出占比是多少?"
"帮我画个图"
这是"问答式"用法,AI执行你的具体指令。
3.2 开放探索(进阶用法)
"我有一个FEC竞选财务数据集,帮我找找有什么有趣的发现"
然后让AI:
- 自动扫描字段分布
- 标记异常值
- 发现奇怪的相关性
- 对不寻常的模式深入挖掘
实际案例:
提示词:"分析这个竞选委员会C00639591的数据,看看有什么异常"
AI可能会发现:
- 某个候选人在特定月份突然收到大量小额捐款
- 某个捐款人频繁出现,金额异常
- 某些地区的捐款模式不符合预期
为什么要这样用:
- 你不可能事先知道数据里有什么
- AI可以在几分钟内完成你几小时的探索性工作
- 它可能会发现你根本没想到的角度
3.3 "Push for More"策略
不要停在第一个发现:
第一轮:"帮我看看这个数据集有什么有趣的"
第二轮:"还有其他的吗?换个角度分析"
第三轮:"这些发现中,哪个最有新闻价值?为什么?"
第四轮:"针对最有价值的那个,深入挖掘"
四、验证框架:确保AI发现的正确性
4.1 Verification Checklist
AI发现"有趣模式"后,需要人工验证:
- 查询准确性:用原始数据或Excel验证相同的计算,看结果是否一致
- 字段理解:AI是否正确理解了字段含义?(比如把"千元"理解成"元")
- 真发现vs明显事实:AI说的是真正有价值的洞察,还是人人都知道的常识?
- 数据伪影:这个"异常"是不是因为数据收集方法造成的?(比如报告截止日期的集中提交)
- 新闻价值:这个发现能不能写成报道?能引出什么后续问题?
4.2 实际操作示例
场景:AI说"2003年的收入增长率异常高,达到45%"
验证步骤:
1. 用Excel重新计算增长率,验证AI的计算
2. 检查原始数据:2003年是否有统计口径变化?
3. 查政策背景:2003年是否有重大政策调整导致收入激增?
4. 评估新闻价值:这个异常是技术性问题还是真正的新闻线索?
五、结构化探索工作流
5.1 记录分析过程
让AI生成结构化分析报告,记录整个分析过程:
"请把整个分析过程整理成Markdown文档,包括:
1. 你查看了哪些表和字段
2. 运行了哪些SQL查询或Python代码
3. 发现了什么异常或趋势
4. 生成了什么可视化
5. 你的分析结论"
为什么重要:
- 可追溯:你可以看到AI的每一步决策
- 可复现:其他人可以按照同样的步骤验证
- 可分享:直接作为分析报告的基础
5.2 完整的探索流程示例
案例:分析上海市农村收入数据
第一步:开放探索(5分钟)
"我有一个1990-2013年上海市农村居民家庭收入和支出数据集。
不要问我具体问题,帮我自主探索,找出3-5个有趣的发现。"
第二步:深度挖掘(10分钟)
"针对你发现的第2个异常(比如某年的恩格尔系数突然上升),
深入分析可能的原因。"
第三步:验证(5分钟)
"请用Python代码重新计算一遍这个异常值,
确保你的计算没有错误。"
第四步:生成报告(5分钟)
"把整个分析过程整理成Markdown文档,包括:
- 数据概况
- 你的发现
- 验证过程
- 可能的新闻线索"
第五步:人工审核
- 用Excel验证AI的关键计算
- 查阅当年的政策背景
- 评估新闻价值
六、快速上手:浏览器里的AI分析
6.1 准备工作
先注册几个国内主流AI平台:
- 通义千问:https://tongyi.aliyun.com/
- DeepSeek:https://www.deepseek.com/
- 豆包:https://www.doubao.com/
- Kimi:https://kimi.moonshot.cn/
这些平台都支持直接上传文件进行分析。
6.2 实战案例:分析农村居民生活数据
我们用一个真实的数据集来练习:1980年以来农村居民家庭生活基本情况.csv
数据来源 :上海市公共数据开放平台
这个数据集包含1990-2013年上海市农村居民家庭的收入和支出数据,包括:
- 年份
- 调查户数
- 平均每人收入(元)
- 平均每人支出(元)
- 食品支出(元)
- 居住面积(平方米)
6.3 开始分析
方法一:使用网页版AI
打开通义千问或DeepSeek,上传CSV文件,然后尝试以下对话:
第一轮:了解数据概况
帮我分析这个CSV文件,告诉我:
1. 一共有多少条记录
2. 数据包含哪些指标
3. 收入和支出的变化趋势
第二轮:深入挖掘
哪一年的人均收入增长最快?
食品支出占总支出的比例是如何变化的?
居住面积的改善情况如何?
第三轮:可视化
帮我生成一个折线图,展示1990-2013年人均收入和支出的变化趋势
方法二:使用Claude Code(推荐)
Claude Code是Anthropic推出的命令行AI编程助手,可以直接在终端中执行代码分析、文件操作等任务。
安装和配置:
bash
# 使用npm全局安装
npm install -g @anthropic-ai/claude-code
# 或者使用npx直接运行(无需安装)
npx @anthropic-ai/claude-code
配置API密钥:
bash
# 首次运行时会提示输入API密钥
claude
# 或者设置环境变量
export ANTHROPIC_API_KEY="your-api-key-here"
获取API密钥:访问 https://console.anthropic.com/ 注册账号(许多云厂商也有转接,推荐zenmux)。
使用Claude Code分析CSV文件:
bash
# 基础用法
claude "分析目录下的1980年以来农村居民家庭生活基本情况.csv文件"
# 更具体的查询
claude "读取CSV文件,告诉我1990-2013年人均收入的变化趋势,找出增长最快的年份"
# 计算恩格尔系数
claude "计算每年的食品支出占比(恩格尔系数),并生成折线图"
自动模式(适合信任的任务):
bash
# 跳过权限检查,自动执行
claude --dangerously-skip-permissions "分析CSV文件并生成所有可能的图表"
注意:自动模式在本地使用时可能执行危险操作(删除文件、覆盖数据)。建议在云端容器中使用,或者先用测试数据验证。
方法三:使用iflow CLI或Trea CLI
iflow CLI(字节跳动开源):
bash
# 安装
npm install -g @iflow/cli
# 使用
iflow "分析当前目录下的CSV文件,生成收入和支出趋势图"
Trea CLI(清华大学开源):
bash
# 安装
npm install -g trea-cli
# 使用
trea "读取并分析1980年以来农村居民家庭生活基本情况.csv,找出增长最快的年份"
6.4 你可能会问的问题
Q:AI分析的结果准确吗?
A:AI会犯错,但它会告诉你它用了什么方法。关键是要:
- 对异常值保持警惕
- 用原始数据验证关键发现
- 把AI当作"初级分析师",你来当"主编"
Q:如果数据量很大怎么办?
A:通义千问单次可以处理几十万行的数据。如果超过限制,可以:
- 先让AI帮你写Python脚本
- 在本地运行脚本处理全量数据
七、进阶:用Python脚本处理数据
7.1 为什么需要脚本
浏览器版AI适合快速探索,但如果你要:
- 处理本地数据库(SQLite、MySQL)
- 自动化重复性任务
- 批量处理多个文件
这时候就需要让AI帮你写Python脚本了。
7.2 实战:分析农村居民收入数据
使用目录下的实际数据文件 1980年以来农村居民家庭生活基本情况.csv。
让AI写脚本:
在通义千问或DeepSeek中输入:
我有一个1980年以来农村居民家庭生活基本情况.csv文件,包含1990-2013年上海市农村居民家庭收入和支出数据。
帮我写一个Python脚本:
1. 读取CSV文件(注意文件编码是GBK)
2. 计算每年的食品支出占比(恩格尔系数)
3. 找出收入增长最快的年份
4. 输出结果
AI会生成类似这样的代码:
python
import pandas as pd
# 读取CSV文件(注意编码)
df = pd.read_csv('1980年以来农村居民家庭生活基本情况.csv', encoding='gbk')
# 计算恩格尔系数(食品支出/总支出)
df['恩格尔系数'] = df['平均每人食品支出(元)'] / df['平均每人支出(元)']
# 计算收入增长率
df['收入增长率'] = df['平均每人收入(元)'].pct_change()
# 找出收入增长最快的年份
fastest_growth_year = df.loc[df['收入增长率'].idxmax()]
print(f"收入增长最快的年份:{fastest_growth_year['年份']}")
print(f"该年增长率:{fastest_growth_year['收入增长率']:.2%}")
# 输出恩格尔系数变化
print("\n恩格尔系数变化:")
print(df[['年份', '恩格尔系数']].head(10))
运行脚本:
bash
# 安装pandas(如果还没有)
pip install pandas
# 运行脚本
python analyze_rural_income.py
7.3 导入SQLite数据库
如果数据量很大,可以导入SQLite数据库。
让AI写导入脚本:
帮我写一个Python脚本,把1980年以来农村居民家庭生活基本情况.csv导入到SQLite数据库中,
数据库文件名为rural_income.db,表名为income。
AI会生成:
python
import pandas as pd
import sqlite3
# 读取CSV(注意编码)
df = pd.read_csv('1980年以来农村居民家庭生活基本情况.csv', encoding='gbk')
# 连接到SQLite
conn = sqlite3.connect('rural_income.db')
# 导入数据库
df.to_sql('income', conn, if_exists='replace', index=False)
# 关闭连接
conn.close()
print("数据已成功导入rural_income.db")
使用Datasette浏览数据库:
Datasette是一个SQLite数据库浏览器,配合AI使用非常方便:
bash
# 安装Datasette
pip install datasette
# 运行
datasette rural_income.db
AI可以:
- 自动生成SQL查询
- 创建数据库关系图
- 将查询结果导出为JSON供JavaScript使用
八、数据清洗实战
8.1 问题场景
你拿到一份数据,发现CSV文件的列名显示为乱码(因为编码是GBK):
,黧,ƽÿ루Ԫ,...
1990, 1 000, 1 990, 1 665,...
这些乱码需要转换成可读的列名,方便后续分析。
8.2 用AI解决
第一步:让AI理解问题
我有一个CSV文件,编码是GBK,列名显示为乱码。
帮我写一个Python脚本,重命名列名为可读的中文名称。
第二步:让AI写转换脚本
帮我写一个Python脚本,重命名CSV文件的列名:
- ' ' -> '年份'
- '黧' -> '调查户数'
- 'ƽÿ루Ԫ' -> '平均每人收入(元)'
- 'ƽÿ˿֧Ԫ' -> '平均每人支出(元)'
- 'ƽÿ֧Ԫ' -> '平均每人食品支出(元)'
- 'ƽÿ֧Ԫ' -> '平均每人居住支出(元)'
AI会生成类似这样的代码:
python
import pandas as pd
# 读取数据(GBK编码)
df = pd.read_csv('1980年以来农村居民家庭生活基本情况.csv', encoding='gbk')
# 重命名列
column_mapping = {
' ': '年份',
'黧': '调查户数',
'ƽÿ루Ԫ': '平均每人收入(元)',
'ƽÿ˿֧Ԫ': '平均每人支出(元)',
'ƽÿ֧Ԫ': '平均每人食品支出(元)',
'ƽÿ֧Ԫ': '平均每人居住支出(元)',
}
df = df.rename(columns=column_mapping)
第三步:验证结果
打开生成的 rural_income_cleaned.csv,检查列名是否正确。
九、数据可视化
9.1 用Python生成图表
AI可以帮你快速生成各种图表。
示例1:柱状图
在AI中输入:
用Python和matplotlib生成一个折线图,
展示1990-2013年人均收入和支出的变化趋势。
数据在rural_income_cleaned.csv文件中。
AI会生成:
python
import pandas as pd
import matplotlib.pyplot as plt
# 读取数据
df = pd.read_csv('rural_income_cleaned.csv')
# 绘制折线图
plt.figure(figsize=(12, 6))
plt.plot(df['年份'], df['平均每人收入(元)'], label='人均收入', marker='o')
plt.plot(df['年份'], df['平均每人支出(元)'], label='人均支出', marker='s')
plt.title('1990-2013年农村居民收入和支出变化趋势')
plt.xlabel('年份')
plt.ylabel('金额(元)')
plt.legend()
plt.grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig('income_trend.png')
plt.show()
示例2:恩格尔系数分析
用Python生成一个折线图,展示食品支出占总支出比例(恩格尔系数)的变化趋势。
常用库对比:
matplotlib:基础图表,适合静态报告seaborn:更美观的统计图表plotly:交互式图表,可缩放、悬停pyecharts:百度开源,适合中国地图
9.2 网页可视化
如果要发布到网上,可以让AI生成HTML页面。
示例:
帮我创建一个HTML页面,读取rural_income_cleaned.csv数据,
用折线图展示收入和支出的变化趋势。
AI会生成一个完整的网页,包含:
- 前端HTML/CSS
- JavaScript数据读取
- 图表渲染代码
十、网页数据抓取
10.1 什么时候需要抓取
- 政府网站有数据但没有下载按钮
- 需要定期监控某个数据源
- 数据分散在多个页面
10.2 用Playwright抓取
安装:
bash
pip install playwright
playwright install
示例:抓取政府采购公告
让AI帮你写脚本:
帮我写一个Playwright脚本,
抓取上海政府采购网的所有招标公告,
保存到CSV文件中。
网址是:https://www.zfcg.sh.gov.cn/ (上海政府采购网)
AI会生成类似这样的代码:
python
from playwright.sync_api import sync_playwright
import csv
def scrape_notices():
with sync_playwright() as p:
browser = p.chromium.launch()
page = browser.new_page()
page.goto("https://www.zfcg.sh.gov.cn/")
# 提取公告列表
notices = []
for item in page.locator(".notice-item").all():
title = item.locator(".title").text_content()
date = item.locator(".date").text_content()
notices.append({
'标题': title,
'日期': date
})
browser.close()
# 保存到CSV
with open('notices.csv', 'w', encoding='utf-8') as f:
writer = csv.DictWriter(f, fieldnames=['标题', '日期'])
writer.writeheader()
writer.writerows(notices)
print(f"共抓取了{len(notices)}条公告")
scrape_notices()
十一、实战项目建议
11.1 从简单开始
项目1:分析你所在城市的公园分布
- 数据源:当地数据开放平台
- 目标:找出公园数量最多的区域
- 难度:★
项目2:追踪空气质量数据
- 数据源:空气质量历史数据
- 目标:自动抓取并生成趋势图
- 难度:★★
11.2 进阶项目
项目3:政府采购数据分析
- 数据源:政府采购网
- 目标:分析中标企业、金额趋势
- 难度:★★★
项目4:房价数据监控
- 数据源:中国房价行情平台
- 目标:定期抓取并生成区域房价热力图
- 难度:★★★
十三、常见问题
Q1:AI分析结果不准确怎么办?
A:
- 让AI展示计算过程
- 用Excel或Python验证关键数据
- 对异常值保持警惕
Q2:数据量太大怎么办?
A:
- 先用样本数据测试
- 让AI写Python脚本处理全量数据
- 考虑使用数据库而非CSV
Q3:如何保存分析过程?
A:
- 保存AI对话记录
- 导出关键代码到脚本文件
- 用Git版本控制
十五、资源汇总
数据源
AI工具
- 通义千问:https://tongyi.aliyun.com/
- DeepSeek:https://www.deepseek.com/
- 豆包:https://www.doubao.com/
- Kimi:https://kimi.moonshot.cn/
学习资源
- 通义千问(阿里云百炼)文档:https://help.aliyun.com/zh/dashscope/
- DeepSeek API文档:https://platform.deepseek.com/
- 豆包(火山引擎)文档:https://www.volcengine.com/docs/82379
- Kimi(月之暗面)文档:https://platform.moonshot.cn/docs/
- Playwright文档:https://playwright.dev/
十六、下一步
- 选择一个你感兴趣的数据集
- 用通义千问或DeepSeek进行初步探索
- 记录发现的问题和洞察
- 尝试生成可视化图表