

以前做数据复盘,我有一个特别真实的感受:
最难的不是分析,而是不知道从哪里开始分析。
Excel 打开,几十列数据,往下一拉几万行。
销售额、订单量、用户数、转化率、退款率、客单价……指标一个不少。
问题是,数据越完整,人反而越容易懵。
你知道这里面肯定有问题,但你不知道问题藏在哪里。
于是很多人的数据复盘最后就变成了一个固定动作:
先做几个透视表。
再拉几个柱状图。
然后找几个涨幅比较大的数字。
最后写一句:
“本月整体经营情况良好,部分指标存在波动,需要进一步关注。”
这句话说完,会议结束。
但真正的问题其实一个都没解决。
后来我开始尝试让 AI 参与数据复盘,发现一个挺有意思的变化:
AI 真正有价值的地方,并不是替我做一个漂亮的图表,而是帮我从一大堆数字里面找到“值得追问的问题”。
这篇文章就记录一下,我是怎么把这个过程做起来的。
先说一个我自己比较熟悉的场景。
假设我们有一家线上业务,每天都会产生订单数据。
一个月下来,大概有十几万条记录。
数据类似这样:
date channel product orders users revenue refund
2026-08-01 App A 1250 32000 185000 3200
2026-08-01 Web A 830 21000 126000 1800
2026-08-01 App B 620 18000 92000 1100
...最开始,我一般会把 Excel 打开,然后开始看。
先看销售额。
再看订单量。
然后看用户数。
接着看转化率。
发现某一天销售额下降了 12%。
于是继续找原因。
是不是订单量下降?
订单量没怎么下降。
是不是客单价下降?
确实下降了一点。
那是不是某个产品卖得少了?
继续筛选。
然后又发现另外一个产品销售额反而上涨。
折腾半天,可能一两个小时过去了。
最后得到一个结论:
“8 月 17 日销售额下降,主要受到 A 产品订单量下降影响。”
看起来没问题。
但这里有一个很大的问题:
如果我一开始没有想到 A 产品,我可能根本不会去看它。
这也是传统数据复盘比较麻烦的地方。
人是带着假设去看数据的。
你认为订单量重要,就先看订单量。
你认为渠道重要,就先看渠道。
你认为产品重要,就先看产品。
但真正的问题,可能藏在一个你压根没想到的维度里面。
所以我后来换了一个思路。
不再让 AI 直接回答:
“帮我分析这张表。”
而是让它做三件事:
第一,先认识数据。
第二,主动寻找异常。
第三,对异常继续拆解。
这三个动作其实非常关键。
因为 AI 如果连数据结构都没有搞清楚,就直接开始写结论,很容易出现一本正经地胡说八道。

这是我后来觉得特别重要的一步。
以前我会直接把数据丢给 AI,然后问:
“帮我分析一下最近的数据。”
现在基本不会这么干。
因为这句话对于 AI 来说太宽泛了。
什么叫“最近”?
什么叫“问题”?
是销售额下降算问题?
还是退款率上升算问题?
还是某个渠道表现不好算问题?
所以我现在通常会先告诉 AI 数据的基本结构。
比如:
你现在是一名数据分析助手。
下面是一份电商订单数据。
字段说明:
date:订单日期
channel:销售渠道
product:产品名称
orders:订单数量
users:访问用户数
revenue:销售收入
refund:退款金额
请先完成以下工作:
1. 检查数据是否存在缺失值
2. 检查日期是否连续
3. 检查明显异常值
4. 计算核心指标
5. 不要急着下结论
6. 先告诉我这份数据中有哪些值得进一步调查的异常这时候 AI 的角色就变了。
它不是一个“写总结的工具”。
而更像一个帮你一起看数据的同事。
比如它可能发现:
发现 3 个值得关注的异常:
1. 8 月 17 日整体销售收入较前 7 日均值下降 18.6%
2. App 渠道订单量变化不大,但收入下降 23.4%
3. 产品 A 在 8 月 17 日订单量下降 31.2%,同时退款率明显上升这时候就有意思了。
因为我们终于知道应该往哪里看。
而不是拿着一张表,从第一行看到最后一行。

当然,这里面真正做分析的部分,最好不要全部交给大模型。
数字计算这种事情,我还是更愿意让 Python 干。
原因非常简单。
加减乘除,让模型做什么?
Python 几行代码就解决了。
比如我们先用 pandas 读取数据:
import pandas as pd
df = pd.read_excel("orders.xlsx")
print(df.head())
print(df.info())
print(df.isnull().sum())然后计算几个核心指标:
df["conversion_rate"] = df["orders"] / df["users"]
df["refund_rate"] = df["refund"] / df["revenue"]
summary = {
"total_orders": df["orders"].sum(),
"total_users": df["users"].sum(),
"total_revenue": df["revenue"].sum(),
"total_refund": df["refund"].sum()
}
print(summary)接下来找异常日期。
比如我们按照日期聚合:
daily = df.groupby("date").agg({
"orders": "sum",
"users": "sum",
"revenue": "sum",
"refund": "sum"
}).reset_index()
daily["refund_rate"] = (
daily["refund"] / daily["revenue"]
)
daily["revenue_change"] = (
daily["revenue"].pct_change()
)这样就可以快速找到销售额突然下降的日期:
abnormal = daily[
daily["revenue_change"] < -0.15
]
print(abnormal)这时候 AI 就不需要自己算十几万行数据。
我们可以把 Python 找出来的“重点数据”交给 AI。
这个思路我觉得特别实用:
Python 负责算,AI 负责解释。
下面直接拿一个完整案例来说。
假设我们有一家电商公司,8 月份一共产生了 18 万条订单记录。
老板开会的时候问了一句话:
“为什么 8 月第三周销售额突然掉了?”
以前遇到这种问题,我估计得查半天。
现在先用 Python 把每天的数据汇总出来。
分析之后发现:
8 月 17 日
销售额:438 万
前 7 日平均销售额:536 万
下降:18.3%第一反应当然是:
销售额下降了。
继续拆。
先看订单量:
订单量:
8 月 17 日:38,420
前 7 日平均:39,180
下降:1.9%这里突然有点奇怪了。
销售额下降 18.3%。
订单量只下降 1.9%。
那问题就很可能不是“卖不动了”。
而是:
每一单赚的钱少了。
于是继续看客单价。
daily["avg_order_value"] = (
daily["revenue"] / daily["orders"]
)结果:
前 7 日平均客单价:136.8 元
8 月 17 日:114.0 元
下降:16.7%问题开始浮现了。
但这还不是最终答案。
因为客单价为什么下降?
继续拆产品。
product_daily = df.groupby(
["date", "product"]
).agg({
"orders": "sum",
"revenue": "sum",
"refund": "sum"
}).reset_index()
product_daily["avg_price"] = (
product_daily["revenue"] /
product_daily["orders"]
)然后发现:
8 月 17 日,A 产品订单量下降了 31%。
但 B 产品订单量上涨了 26%。
表面看起来只是产品结构发生了变化。
继续往下看。
A 产品原本平均订单金额大约 189 元。
B 产品平均订单金额只有 82 元。
也就是说:
虽然总订单量没怎么变,但高客单价产品被低客单价产品替代了。
这时候 AI 再介入。
我把这些关键数据交给它:
请基于以下分析结果继续判断销售额下降原因:
8月17日销售额下降18.3%
订单量下降1.9%
平均客单价下降16.7%
A产品订单量下降31%
B产品订单量上涨26%
A产品平均订单金额189元
B产品平均订单金额82元
请回答:
1. 最可能的直接原因是什么?
2. 为什么订单量没有明显下降,但销售额下降明显?
3. 下一步应该检查什么?
4. 不要猜测没有数据支持的原因。AI 给出的分析就会比直接问“为什么销售下降”靠谱很多。
因为我们已经把它的分析范围限定住了。
最终得到的结论大概是:
8 月 17 日销售额下降的主要原因并非订单规模大幅下降,而是订单结构发生变化。高客单价 A 产品订单量明显下降,同时低客单价 B 产品订单量增加,导致整体平均订单金额下降约 16.7%,最终造成销售收入明显下降。
这时候再继续追:
为什么 A 产品订单量下降?
这才是真正值得调查的问题。
于是继续按渠道拆。
结果发现:
App:
A 产品下降 8%
Web:
A 产品下降 12%
小程序:
A 产品下降 57%这一下就非常明显了。
问题集中在小程序。
再往下看:
小程序 A 产品:
8月16日:
访问用户 12,800
订单 1,860
8月17日:
访问用户 13,200
订单 1,010用户没怎么下降。
订单却掉了将近一半。
这时候我们基本已经从:
“销售额下降”
一路追到了:
“小程序渠道的 A 产品转化异常。”
这个过程我觉得就是 AI 做数据复盘真正有意思的地方。
它不是直接告诉你一个答案。
而是帮你把一个非常模糊的问题,逐渐缩小成一个可以真正排查的问题。

后来我又发现一个特别有用的玩法。
以前数据复盘最累的地方其实不是算数字。
而是:
一个问题查完以后,不知道下一步查什么。
比如:
销售额下降。
查到订单量没下降。
那接下来查什么?
查客单价。
客单价下降。
接下来查什么?
查产品结构。
产品结构变化。
接下来呢?
查渠道。
渠道异常。
接下来?
查页面。
再往下?
查活动、库存、价格、支付、接口……
如果全部靠人工一点点想,其实非常消耗精力。
所以我现在会让 AI 专门干一件事:
根据当前发现,自动提出下一轮调查问题。
例如:
当前发现:
销售额下降18.3%
订单量下降1.9%
客单价下降16.7%
A产品订单量下降31%
小程序渠道A产品订单下降57%
请不要继续给我总结。
请只输出下一步最值得检查的5个问题,并按照优先级排序。可能得到:
P0:
小程序 A 产品页面是否存在异常?
P0:
8 月 17 日 A 产品在小程序中的价格是否发生变化?
P1:
A 产品当天是否存在库存不足?
P1:
小程序当天是否存在支付失败率异常?
P2:
当天是否修改了小程序推荐位或活动配置?你会发现,这个时候 AI 已经不是传统意义上的“数据分析工具”了。
它更像一个陪你一起排查问题的人。
而且有一个非常大的优势:
它不会因为你查了两个小时而烦。
你可以不断把新的结果塞给它。
比如:
“价格没变。”
“库存正常。”
“支付也正常。”
然后继续问:
“排除这三个因素以后,下一步查什么?”
这时候它就可以继续往下推。
当然,我还是建议保留一个原则:
AI 可以提出假设,但最终结论一定要回到数据。
比如 AI 说:
“可能是页面改版导致转化率下降。”
你不能直接写进复盘报告。
你应该再查:
8月16日页面转化率:14.5%
8月17日页面转化率:7.9%然后再查页面有没有改动。
只有数据和事实都对得上,这个结论才成立。

现在如果让我重新做一次数据复盘,我不会一上来就做几十张图。
我会先把问题拆开。
第一步,数据清洗。
把缺失值、重复值、异常值先处理掉。
第二步,Python 做基础统计。
把销售额、订单量、用户数、转化率、客单价等指标算出来。
第三步,寻找异常。
不要一开始就假设“问题一定是什么”。
先让数据告诉你哪里不正常。
第四步,让 AI 帮忙解释异常。
但给它的数据必须是经过处理的,而不是一股脑把原始数据扔进去。
第五步,继续追问。
发现一个问题之后,让 AI 给出下一批值得调查的问题。
然后回到数据里面验证。
整个过程其实可以总结成一句非常简单的话:
机器负责把数字算清楚,人和 AI 一起把问题问清楚。
我现在越来越觉得,AI 做数据复盘最大的价值,并不是“帮我生成一份数据分析报告”。
报告其实很好写。
真正难的是:
从 18 万行数据里面,找到那个真正值得写进报告的问题。
以前我打开 Excel,看到的是:
“18 万行数据。”
现在我更希望看到的是:
“这里有 3 个异常,可能值得查。”
然后顺着一个异常往下追。
销售额下降。
↓
不是订单量。
↓
是客单价。
↓
不是整体价格。
↓
是产品结构。
↓
不是所有渠道。
↓
是小程序。
↓
不是用户减少。
↓
是转化率突然下降。
这时候你才真正知道:
问题在哪里。
而这可能才是 AI 参与数据复盘之后,最让我觉得有价值的一点。
它没有替我做决定。
它只是让我少花很多时间,在那张巨大的表格里“找东西”。
以前是:
对着表格发愁。
现在是:
一眼看到问题,然后顺着问题往下查。
这两个状态,看起来只是工具换了。
实际上,工作方式已经完全不一样了。

最后附一个我自己比较推荐的最小化代码框架。如果你手里已经有一份 CSV 或 Excel 数据,其实完全可以从这个版本开始改:
import pandas as pd
# 1. 读取数据
df = pd.read_excel("orders.xlsx")
# 2. 数据检查
print("数据量:", len(df))
print("\n缺失值:")
print(df.isnull().sum())
# 3. 核心指标
df["conversion_rate"] = (
df["orders"] / df["users"]
)
df["avg_order_value"] = (
df["revenue"] / df["orders"]
)
df["refund_rate"] = (
df["refund"] / df["revenue"]
)
# 4. 按日期汇总
daily = df.groupby("date").agg({
"orders": "sum",
"users": "sum",
"revenue": "sum",
"refund": "sum"
}).reset_index()
daily["avg_order_value"] = (
daily["revenue"] /
daily["orders"]
)
daily["revenue_change"] = (
daily["revenue"].pct_change()
)
# 5. 找销售额异常下降
abnormal = daily[
daily["revenue_change"] < -0.15
]
print("\n重点异常日期:")
print(abnormal)
# 6. 找产品异常
product = df.groupby(
["date", "product"]
).agg({
"orders": "sum",
"revenue": "sum",
"refund": "sum"
}).reset_index()
product["avg_order_value"] = (
product["revenue"] /
product["orders"]
)
# 7. 输出重点数据
print("\n产品数据:")
print(product.sort_values(
"orders",
ascending=False
).head(20))这段代码并不复杂。
但它已经足够搭出一个最基本的“AI 数据复盘”雏形。
后面再往上加异常检测、自动生成分析 Prompt、接入大模型、自动生成图表,甚至做成一个内部的数据复盘工具,都可以一步一步往上加。
别一开始就想着做一个特别复杂的 AI 数据分析平台。
先让 AI 帮你解决一个真实的问题。
比如:
“为什么这个月销售额突然下降?”
当它真的能帮你从十几万行数据里,把问题一步步追到具体渠道、具体产品甚至具体页面的时候,你就会发现——
AI 最有价值的地方,从来不是替你把表格“总结一下”。
而是帮你从:
“我不知道看什么。”
变成:
“我知道下一步该查什么了。”
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。