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. 尝试生成可视化图表
相关推荐
guslegend3 小时前
3月27日-(Taku团队+.claude/文件夹+AI快速开发+Qclaw)
人工智能·大模型
Elastic 中国社区官方博客3 小时前
Elasticsearch BBQ:一场教科书式的向量搜索 “弯道超车”
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
极光代码工作室3 小时前
基于深度学习的中文文本情感分析系统
人工智能·python·深度学习·神经网络·nlp
乐鑫科技 Espressif3 小时前
乐鑫发布 ESP32-S31:高性能多协议双核 RISC-V,面向 AI 智能交互
人工智能·mcu·esp32·乐鑫科技
智慧化智能化数字化方案3 小时前
数字化转型——解读107页企业数字化转型整体规划-技术篇【附全文阅读】
大数据·人工智能·企业数字化转型整体规划
龙侠九重天3 小时前
使用 OpenClaw 进行数据分析和可视化
大数据·人工智能·python·ai·信息可视化·数据分析·openclaw
星爷AG I3 小时前
16-6 问题解决(AGI基础理论)
人工智能·agi
树獭非懒3 小时前
Google A2UI:让 AI 智能体「开口说界面」
前端·人工智能·后端
AI职业加油站3 小时前
数字时代先机:大数据采集工程师
大数据·人工智能·机器学习·职场和发展