前言
在前几篇文章中,我已经复盘了乌东村文旅 AI 智能客服与推荐系统的整体设计、5 个 Skill 的拆解,以及品牌 PPT 自动生成的过程。
这一篇重点写 Skill 4:data-analysis 数据分析技能。
这个 Skill 的任务看起来很明确:
准备乌东村游客 2025 年游客情况数据集
↓
用 Python 做数据清洗、探索分析、可视化
↓
生成完整数据分析报告
↓
提炼业务洞察,反哺 AI 客服与推荐系统
但实际做的时候,最大的问题并不是 Python 代码,而是:
没有公开可直接下载的乌东村 2025 年逐日真实游客数据。
所以这篇文章主要复盘两个重点:
1. 没有真实明细数据时,如何构建课程测试用数据集
2. 如何让数据分析 Skill 不只是画图,而是输出业务洞察
一、老师对 Skill 4 的要求
Skill 4 对应的是数据分析能力。老师给出的实战步骤大致是:
12. 准备测试数据集
- 乌东村游客 2025 年游客情况
- 建议数据量:100-10000 行
- 至少包含时间维度和数值维度
13. 编写技能核心逻辑
- 数据清洗 → 探索分析 → 可视化 → 洞察
- 为 AI 提供常用 Python 代码模板
14. 设计报告模板
- 执行摘要 → 关键发现 → 详细分析 → 建议行动
15. 测试与迭代
- 用测试数据生成完整报告
- 检查数据解读是否准确
- 优化分析视角提示,让报告更有业务洞察
这说明 Skill 4 不是写一份静态说明文档,而是要真的跑通数据分析流程。
最少要证明:
1. 有测试数据集
2. 数据里有时间维度和数值维度
3. 能用 Python 读取和清洗
4. 能生成图表
5. 能输出报告
6. 报告有业务洞察,而不是只罗列数字
二、数据问题:真实数据没有公开怎么办?
一开始我想找"乌东村 2025 年游客情况"真实数据,但实际公开资料一般只会给到年度汇总口径,比如:
全年接待游客量
旅游综合收入
村集体经济收入
这种数据可以作为年度参考,但不能直接用于 Skill 4 的日度趋势分析。
老师要求的数据量是:
100-10000 行
如果只有年度汇总,只有 1 行数据,显然不够做:
月度趋势
日度波动
咨询量分析
转化漏斗
用户类型结构
所以我最后采用的方案是:
公开年度口径作为锚点
+
课程测试用日度模拟数据
也就是说:
年度总量参考公开报道
日度明细用于课程测试模拟
这样既可以满足 Skill 4 的测试要求,又不会把模拟数据伪装成真实经营数据。
三、数据集必须写清楚:这是模拟数据
这个地方非常关键。
如果直接把模拟出来的 365 行日度数据写成"乌东村真实游客流水",那就是严重问题。
所以我在数据包、分析报告、README 中都明确写了:
本数据为课程测试用模拟数据,年度总量锚定公开报道,日度明细为模拟分配,不代表乌东村真实经营流水。
这句话必须出现。
它的意义是:
1. 说明数据可以用于 Skill 测试
2. 说明不能用于真实商业决策
3. 说明结论需要后续真实数据验证
数据分析 Skill 的目标不是伪造真实经营数据,而是验证:
AI 能否完成数据读取、清洗、统计、可视化和报告生成流程。
四、数据包结构设计
我最终把数据包整理到:
data/skill4/
主要包含四类文件:
data/skill4/
├─ wudong_2025_public_source_summary.csv
├─ wudong_2025_skill4_daily_simulated.csv
├─ wudong_2025_skill4_monthly_summary.csv
└─ wudong_2025_skill4_dataset.xlsx
1. public_source_summary.csv
这个文件记录公开来源摘要和口径说明。
它的作用不是做日度分析,而是说明年度锚点来自哪里,以及数据口径有什么不确定性。
字段可以包括:
source_title
source_url
metric
reported_value
unit
reliability_level
notes
这个文件主要用于让报告更规范,避免"数据从哪来"说不清。
2. daily_simulated.csv
这是 Skill 4 的主测试数据,365 行,每行代表 2025 年某一天的模拟经营数据。
典型字段包括:
date
visitors
tourism_revenue
consultations
ai_answers
recommendation_clicks
favorites
booking_conversions
young_visitors_ratio
family_visitors_ratio
wellness_visitors_ratio
study_tour_visitors_ratio
senior_visitors_ratio
这个文件满足老师要求的两个关键条件:
时间维度:date
数值维度:visitors、tourism_revenue、consultations 等
3. monthly_summary.csv
这个文件是月度汇总表,方便快速查看趋势。
字段包括:
month
monthly_visitors
monthly_revenue
monthly_consultations
monthly_ai_answers
monthly_recommendation_clicks
monthly_favorites
monthly_booking_conversions
它适合做:
月度游客趋势图
月度收入趋势图
月度转化趋势图
4. dataset.xlsx
Excel 文件中可以包含多个 Sheet,例如:
README
Sources
Daily_Data
Monthly_Summary
Dashboard
这样老师或同学打开 Excel 时,可以更直观看到数据说明、来源摘要和分析表。
五、Skill 4 文件怎么设计?
主技能文件是:
skills/data-analysis.md
它的作用是告诉 AI 数据分析时应该怎么工作。
我把 Skill 4 的核心逻辑设计为:
数据读取
↓
数据清洗
↓
探索性分析
↓
趋势分析
↓
可视化输出
↓
业务洞察
↓
Markdown 报告
↓
数据局限说明
六、数据读取规则
Skill 4 必须支持常见数据格式:
CSV
Excel
JSON
读取逻辑大致是:
import pandas as pd
file_path = "data/skill4/wudong_2025_skill4_daily_simulated.csv"
if file_path.endswith(".csv"):
df = pd.read_csv(file_path)
elif file_path.endswith(".xlsx"):
df = pd.read_excel(file_path)
elif file_path.endswith(".json"):
df = pd.read_json(file_path)
读取后要自动识别:
字段数量
行数
字段类型
时间字段
数值字段
类别字段
这一步不是为了炫技,而是为了保证后续分析不会把日期当字符串、把数值当文本。
七、数据清洗流程
Skill 4 的清洗流程包括:
1. 缺失值检查
2. 重复值检查
3. 异常值检查
4. 日期格式转换
5. 数值字段转换
6. 清洗结果记录
示例代码:
# 缺失值检查
missing_summary = df.isnull().sum()
# 重复值检查
duplicate_count = df.duplicated().sum()
# 日期字段转换
df["date"] = pd.to_datetime(df["date"], errors="coerce")
# 数值字段转换
numeric_cols = [
"visitors",
"tourism_revenue",
"consultations",
"ai_answers",
"recommendation_clicks",
"favorites",
"booking_conversions"
]
for col in numeric_cols:
df[col] = pd.to_numeric(df[col], errors="coerce")
清洗结果要写进报告,比如:
缺失值情况:无明显缺失
重复值情况:无重复日期记录
异常值情况:发现部分节假日游客量高于均值,属于模拟旺季波动
时间字段:已转换为 datetime
数值字段:已转换为 numeric
八、关键指标设计
数据分析不能只看一堆原始数字,需要先定义关键指标。
我设计了这些指标:
年度游客量
年度旅游收入
日均游客量
月均游客量
总咨询量
总 AI 问答量
总推荐点击量
总收藏量
总预约转化量
推荐点击到预约转化率
人均旅游收入
示例计算:
total_visitors = df["visitors"].sum()
total_revenue = df["tourism_revenue"].sum()
avg_daily_visitors = df["visitors"].mean()
total_clicks = df["recommendation_clicks"].sum()
total_bookings = df["booking_conversions"].sum()
booking_conversion_rate = total_bookings / total_clicks if total_clicks else 0
revenue_per_visitor = total_revenue / total_visitors if total_visitors else 0
这些指标能回答几个核心问题:
游客规模大概如何?
收入和游客量是否同步变化?
AI 客服咨询量是否跟游客量相关?
推荐点击到预约之间有没有转化损失?
九、月度趋势分析
数据里有 date 字段,所以可以做月度聚合。
示例代码:
df["month"] = df["date"].dt.to_period("M").astype(str)
monthly = df.groupby("month").agg({
"visitors": "sum",
"tourism_revenue": "sum",
"consultations": "sum",
"ai_answers": "sum",
"recommendation_clicks": "sum",
"favorites": "sum",
"booking_conversions": "sum"
}).reset_index()
月度分析可以看:
哪个月份游客最多?
哪个月份收入最高?
咨询高峰是否和游客高峰一致?
推荐点击和预约转化是否同步增长?
这些问题比单纯算总量更有业务意义。
十、可视化输出设计
老师要求数据分析技能要有可视化能力,所以我让 Skill 4 至少生成 5 张图。
图表输出目录:
outputs/data-analysis-charts/
建议图表包括:
01_monthly_visitors_trend.png
02_monthly_revenue_trend.png
03_consultation_ai_recommendation_trend.png
04_conversion_funnel.png
05_user_type_distribution.png
06_revenue_per_visitor.png
十一、图表 1:月度游客量趋势
用途:
观察全年游客量变化,识别旺季和淡季。
图表类型:
折线图
业务解读示例:
如果 7-8 月游客量明显较高,说明暑期可能是主要出游高峰。
AI 客服应在暑期前提前补充亲子游、避暑、住宿、交通等高频问答。
这就把图表结论和 AI 客服优化联系起来了。
十二、图表 2:月度旅游收入趋势
用途:
观察旅游收入是否与游客量同步变化。
如果游客量增长但收入没有同步增长,可能说明:
1. 人均消费低
2. 体验项目转化不足
3. 住宿或餐饮产品承接不足
4. 推荐系统没有有效引导高价值服务
对应建议:
AI 客服在推荐路线时,可以增加体验项目、餐饮、住宿等组合推荐。
十三、图表 3:咨询量、AI 问答量、推荐点击趋势
用途:
观察 AI 客服使用情况和推荐系统交互情况。
这张图对 OPC-08 很重要,因为项目主题就是 AI 智能客服与推荐。
可以分析:
咨询量是否随游客量变化?
AI 问答量是否覆盖大部分咨询?
推荐点击是否持续增长?
如果咨询量高但推荐点击低,可能说明:
AI 客服回答了问题,但没有有效引导用户进入路线推荐。
对应优化建议:
在回答交通、住宿、游玩天数等问题后,自动追加"是否需要我帮你推荐一条路线?"
十四、图表 4:推荐点击 → 收藏 → 预约转化漏斗
这是我认为最有业务价值的一张图。
漏斗结构:
推荐点击
↓
收藏
↓
预约转化
它可以看出:
用户对推荐内容是否感兴趣
用户是否愿意保存路线
用户最终是否愿意预约或进一步咨询
如果点击高、收藏低:
说明路线标题或推荐结果不够有吸引力。
如果收藏高、预约低:
说明用户有兴趣,但还存在决策顾虑。
对应建议:
AI 客服应增加预算、路线强度、住宿条件、交通方式等追问,降低用户决策阻力。
十五、图表 5:游客类型结构分析
游客类型可以包括:
年轻游客
亲子家庭
康养游客
研学团队
中老年游客
通过占比分析,可以判断哪个人群是主要服务对象。
例如:
如果年轻游客占比高:
内容上应加强小红书、短视频、拍照打卡、路线攻略。
如果亲子家庭占比高:
AI 客服应优先补充安全、儿童友好、路线强度、亲子活动等问答。
如果康养游客占比高:
应加强住宿、安静环境、慢生活、长住方案等内容。
这就是数据分析对推荐系统的价值。
十六、报告模板设计
Skill 4 生成的报告不是随便写,而是固定结构:
# 乌东村 2025 游客数据分析报告------Skill 4 测试版
## 一、模拟数据声明
## 二、数据说明
## 三、数据清洗结果
## 四、执行摘要
## 五、关键指标
## 六、详细分析
## 七、图表与解读
## 八、业务洞察
## 九、建议行动
## 十、数据局限
这个模板对应老师要求:
执行摘要 → 关键发现 → 详细分析 → 建议行动
同时加入了:
模拟数据声明
数据局限
避免误用数据。
十七、业务洞察:不要只罗列数字
Skill 4 最容易写成这种低质量报告:
全年游客量为 X。
全年收入为 Y。
咨询量为 Z。
这种只是数字罗列,不算真正的数据分析。
我在 Skill 中要求每个发现都必须包含:
数据发现
可能解释
对 AI 客服与推荐系统的影响
建议行动
数据局限
例如:
数据发现:
暑期月份游客量和咨询量同步上升。
可能解释:
暑假期间亲子家庭、年轻游客和避暑需求增加。
对 AI 客服的影响:
暑期前应提前补充亲子路线、住宿、交通、避暑注意事项等知识库内容。
建议行动:
在 6 月底前上线"暑期亲子游推荐规则"和"2天1晚轻松路线推荐模板"。
数据局限:
当前数据为模拟数据,需后续使用真实咨询日志和订单数据验证。
这样才算有业务洞察。
十八、对 AI 客服与推荐系统的影响
数据分析最终要反哺 OPC-08 项目。
我把建议分成几类:
1. AI 客服知识库建议
补充高频问题:
- 怎么去乌东村?
- 适合玩几天?
- 带孩子是否合适?
- 有无康养住宿?
- 拍照路线怎么安排?
2. 智能推荐规则建议
按游客类型推荐:
- 年轻游客:拍照打卡路线
- 亲子家庭:轻松亲子路线
- 康养游客:慢生活旅居路线
- 研学团队:民族文化体验路线
- 中老年游客:低强度观光路线
3. 内容营销建议
在游客量高峰前发布攻略内容
在咨询高峰期强化小红书和视频号投放
根据用户类型调整标题和 CTA
4. 数据采集建议
后续真实系统应采集:
- 用户咨询问题
- 用户画像标签
- 推荐路线点击
- 收藏行为
- 预约转化
- 人工介入记录
十九、生成的文件
最终 Skill 4 生成了这些文件:
scripts/run_skill4_data_analysis.py
outputs/data-analysis-charts/
├─ 01_monthly_visitors_trend.png
├─ 02_monthly_revenue_trend.png
├─ 03_consultation_ai_recommendation_trend.png
├─ 04_conversion_funnel.png
├─ 05_user_type_distribution.png
└─ 06_revenue_per_visitor.png
outputs/data-analysis-tables/
├─ monthly_metrics.csv
├─ key_indicators.csv
├─ data_quality_summary.csv
└─ conversion_summary.csv
skill-test-results/
├─ data-analysis-skill4-final-report.md
├─ data-analysis-skill4-checklist.md
└─ data-analysis-screenshot-guide.md
这些文件共同证明:
Skill 4 不是只写了说明,而是实际跑通了数据分析流程。
二十、验收检查
我还生成了一个 Skill 4 检查表:
skill-test-results/data-analysis-skill4-checklist.md
逐项检查:
1. 是否准备测试数据集
2. 数据量是否在 100-10000 行之间
3. 是否包含时间维度
4. 是否包含数值维度
5. 是否支持 CSV / Excel / JSON
6. 是否完成数据清洗
7. 是否完成探索分析
8. 是否完成可视化
9. 是否完成洞察提炼
10. 是否有 Python 代码模板
11. 是否有报告模板
12. 是否生成完整分析报告
13. 是否检查数据解读是否准确
14. 是否优化分析视角提示
15. 是否明确声明模拟数据限制
这样老师看起来比较直观,也方便我截图提交。
二十一、截图建议
如果要提交作业,Skill 4 我建议截图:
1. data/skill4/ 数据集目录
2. daily_simulated.csv 前几行
3. scripts/run_skill4_data_analysis.py 核心分析流程
4. outputs/data-analysis-charts/ 图表目录
5. 任意一张趋势图
6. data-analysis-skill4-final-report.md 的模拟数据声明
7. data-analysis-skill4-final-report.md 的关键指标表
8. data-analysis-skill4-final-report.md 的业务洞察
9. data-analysis-skill4-checklist.md 的达标检查表
如果只能截一两张,我优先选择:
1. 数据分析图表
2. 报告中的"模拟数据声明 + 业务洞察"
这两张最能证明你不是乱编数据,而是在做规范的数据分析流程测试。
二十二、踩坑总结
这部分做下来,我总结了几个经验。
1. 没有真实数据时,不能硬装真实
老师要求"乌东村游客 2025 年数据",但公开明细数据不一定存在。
正确做法不是胡编一份,而是:
公开年度数据作为锚点
模拟日度明细用于课程测试
明确写清数据限制
2. 数据分析报告必须声明数据性质
凡是模拟数据,必须写:
本数据为课程测试用模拟数据,不代表真实经营流水。
这句话是底线。
3. 图表不是目的,洞察才是目的
生成图表只是中间步骤。
报告里真正有价值的是:
这些数据说明了什么?
为什么会这样?
对 AI 客服和推荐系统有什么影响?
下一步应该怎么做?
4. 不要把相关性写成因果
例如咨询量和游客量一起升高,只能说明趋势相关,不能直接说:
咨询量增加导致游客量增加。
更规范的说法是:
咨询量与游客量在模拟数据中呈同步上升趋势,可能反映旺季游客咨询需求增加,仍需真实数据验证。
5. 数据分析 Skill 要服务项目目标
这个项目不是普通数据分析,而是 OPC-08:AI 智能客服与推荐。
所以报告的最终建议必须回到:
AI 客服知识库
游客画像标签
推荐规则
内容营销
转化漏斗
数据采集
否则就会变成和项目无关的通用数据报告。
结语
Skill 4:data-analysis 是整个项目中最能体现"工程化"的部分。
它要求 AI 不只是会写文案,还要能:
读取数据
清洗数据
计算指标
生成图表
解释业务意义
输出报告
说明数据局限
在没有真实逐日经营数据的情况下,我采用了"公开年度口径 + 课程测试模拟数据"的方式,既满足了作业测试要求,也避免把模拟数据伪装成真实数据。
最终 Skill 4 的价值,不是生成了几张图,而是建立了一套文旅 AI 客服项目的数据分析流程:
游客数据
↓
指标分析
↓
图表可视化
↓
业务洞察
↓
AI 客服与推荐系统优化
下一篇文章,我会继续复盘 Agent 团队设计:如何把 5 个 Skill 进一步组织成 5 个分工明确的 AI Agent。