AI数据分析实战指南

AI数据分析实战指南

基于通义千问、DeepSeek等国内AI工具的数据分析教程

适用对象:数据记者、数据分析师、研究人员


一、为什么需要AI数据分析

传统的Excel分析流程通常是这样的:

  1. 打开Excel,导入数据
  2. 手动筛选、排序、透视
  3. 发现问题后,重新调整公式
  4. 重复上述步骤多次

整个过程可能需要1-2小时,而且容易出错。

现在用AI助手,流程变成:

  1. 把数据丢给AI
  2. 说"帮我看看有什么有趣的"
  3. AI自动发现异常、趋势、关联
  4. 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发现"有趣模式"后,需要人工验证:

  1. 查询准确性:用原始数据或Excel验证相同的计算,看结果是否一致
  2. 字段理解:AI是否正确理解了字段含义?(比如把"千元"理解成"元")
  3. 真发现vs明显事实:AI说的是真正有价值的洞察,还是人人都知道的常识?
  4. 数据伪影:这个"异常"是不是因为数据收集方法造成的?(比如报告截止日期的集中提交)
  5. 新闻价值:这个发现能不能写成报道?能引出什么后续问题?

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平台:

这些平台都支持直接上传文件进行分析。

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

  1. 让AI展示计算过程
  2. 用Excel或Python验证关键数据
  3. 对异常值保持警惕

Q2:数据量太大怎么办?

A

  1. 先用样本数据测试
  2. 让AI写Python脚本处理全量数据
  3. 考虑使用数据库而非CSV

Q3:如何保存分析过程?

A

  1. 保存AI对话记录
  2. 导出关键代码到脚本文件
  3. 用Git版本控制

十五、资源汇总

数据源

AI工具

学习资源


十六、下一步

  1. 选择一个你感兴趣的数据集
  2. 用通义千问或DeepSeek进行初步探索
  3. 记录发现的问题和洞察
  4. 尝试生成可视化图表
相关推荐
Raink老师3 小时前
【AI面试临阵磨枪】详细解释 Transformer 架构的核心组件与工作流程。
人工智能·深度学习·transformer·ai 面试·ai 应用开发
qcx233 小时前
【AI Agent实战】OpenClaw 安全加固完全指南:安全攻击手段与五步防护实践(2026最新)
人工智能·安全
AnnyYoung3 小时前
单细胞转录组+空间转录组+深度学习的意义
深度学习·数据分析
码农小白AI3 小时前
AI报告审核进入技术驱动时代:IACheck如何从规则引擎走向深度学习,构建检测报告审核“技术矩阵”
人工智能·深度学习
song150265372983 小时前
视觉检测设备:自动识别缺陷、尺寸、瑕疵、装配错误,一键全检
人工智能·计算机视觉·视觉检测
智能化咨询3 小时前
(163页PPT)某著名企业K3生产制造售前营销指导方案P164(附下载方式)
大数据·人工智能
Zzj_tju4 小时前
大语言模型技术指南:SFT、RLHF、DPO 怎么串起来?对齐训练与关键参数详解
人工智能·深度学习·语言模型
金智维科技官方4 小时前
RPA技术赋能电信运营商话单稽核:金智维如何驱动高精度自动化转型
人工智能·自动化·数字化·rpa·智能体·电信
2501_948114244 小时前
2026模型能力分化加剧:多模型聚合架构的技术解析与工程落地思考
人工智能·ai·chatgpt·架构
新知图书5 小时前
LangGraph中的记忆存储
人工智能·langgraph·智能体设计·多智能体设计