运营数据统计分析
概述
本技能处理运营业务数据(Excel格式),完成从原始杂乱数据到结构化多维度统计分析报告的完整流水线:
- 数据清洗:产品列杂乱名称归类为标准大类、从文本中提取交接日期
- 多维度统计:月度/季度/半年度/年度四个时间维度的交叉统计
- 图表生成:15种图表(柱状图、堆叠图、环形图、热力图、折线图、环比图),JPG单独保存
- Word报告:含封面、5章正文(概览/月度/季度/半年度/年度)、附录,每张图表配深度数据分析文字
适用场景
- 用户提供含院校信息的Excel文件,要求产品归类整理
- 需要按时间维度(月/季/半年/年)统计新增院校分布
- 需要生成图表并产出Word版本统计报告
- 需要环比增长率分析
- 需要图表JPG独立保存供其他用途使用
工作流程
前置条件
- Python 3.8+ 环境已安装:openpyxl、matplotlib、python-docx、numpy
- 中文字体(按操作系统选择):
- macOS:Arial Unicode MS / PingFang SC / Heiti SC
- Windows:Microsoft YaHei(微软雅黑)/ SimHei(黑体)
- Linux:WenQuanYi Micro Hei / Noto Sans CJK SC / Source Han Sans CN
- 脚本内置跨平台字体自动检测,按上述顺序尝试,无需手动配置
第一步:数据清洗
运行 scripts/clean_data.py,完成:
- 产品列归类:通过
PRODUCT_MAP精确映射表,将原始杂乱产品名拆分为三列:产品大类(成教平台/非学历平台/考务产品/制课服务/自考服务/同等学力申硕/其他)产品名称(清洗后)(标准化名称,保留版本差异)产品详情(附加模块、课程门数等补充信息)
- 日期提取:从"交接/下线"等杂乱文本列中用正则
(\d{4})年(\d{1,2})月(\d{1,2})日提取标准日期 - 输出Excel:4个工作表(清洗数据/省份统计/月份统计/产品大类统计),新增列绿色高亮
产品映射规则详见 references/product_mapping_rules.md。
第二步:图表生成 + Word报告
运行 scripts/generate_report.py,完成:
- 读取清洗后Excel,解析日期,按月/季/半年/年分组统计
- 生成15张JPG图表,保存到独立文件夹
图表_JPG/ - 计算分析指标(峰值、谷值、占比、环比增长率等)
- 生成Word报告,每张图表下方配【数据分析】段落(蓝色加粗前缀+正文),热力图额外配【图表说明】阅读指南
15种图表类型与报告章节结构详见 references/chart_types_catalog.md 和 references/report_chapter_structure.md。
关键设计决策
产品归类逻辑
- 成教平台:含"成教"关键字归入,版本号(高级版/标准版)保留在清洗后名称,附加模块放入详情
- 非学历平台:含"非学历"关键字归入,版本差异(新版/智慧版/标准版/专技版/同等学力)保留在名称
- 制课服务:含"制课"关键字归入,区分AI制课vs传统+AI,课程门数放入详情
- 其余按业务类型单独归类
未命中映射表的归为"其他"类。映射表为精确匹配(PRODUCT_MAP.get(product_raw.strip())),新增产品名需手动添加映射。
环形图样式(make_donut_chart函数)
- 环形结构(width=0.42),中心显示总数
- 右侧图例含"标签+数量+百分比"
- 最大扇区微凸出(explode=0.04)
- 白色描边2.5px,柔和背景色#FAFBFC
- 扇区降序排列,autopct显示数量
环比分析
- 季度/半年度统计表新增"环比增长数"和"环比增长率"列
- 首期环比显示"—"(无前序对比)
- 年度统计表新增"占比"列和合计行
- 年度章节末尾新增"季度环比汇总表"(含累计完成率)
- 环比图表:季度用双Y轴(柱+红线),半年度用双柱+弧形箭头标注
每图数据分析文字
使用 add_analysis(doc, text) 函数,格式为蓝色加粗"【数据分析】"前缀+正文。分析文字必须包含四个层次:
- 数据引用:具体数值和百分比
- 趋势判断:上升/下降/集中/分散
- 根因归因:为什么出现此趋势(学期周期、采购流程等)
- 管理建议:可操作的行动方向
热力图阅读说明
热力图下方额外使用 explain_para 添加【图表说明·如何阅读热力图】段落,从四个维度解释:横看产品宽度、竖看产品渗透、找空白格、看对角线趋势。
脚本定制指南
修改产品归类规则
编辑 scripts/clean_data.py 中的 PRODUCT_MAP 字典,按格式 "原始产品名": ("产品大类", "清洗后名称", "产品详情") 添加或修改映射。
修改图表配色
编辑 scripts/generate_report.py 中的 CAT_COLORS(产品大类配色)和 PROV_COLORS(省份配色)。
新增图表类型
在 generate_report.py 的图表生成区域添加新图表代码,保存到 chart_files 字典,并在 Word 报告对应章节插入 doc.add_picture() + add_analysis()。
修改报告章节
编辑 generate_report.py 的 Word 生成部分,参照 references/report_chapter_structure.md 中的章节结构。
输出文件清单
| 输出物 | 路径 | 说明 |
|--------|------|------|
| 清洗统计Excel | {输出目录}/{文件名}_清洗统计.xlsx | 4个工作表 |
| Word报告 | {输出目录}/{文件名}多维度统计报告.docx | 5章+附录 |
| 图表JPG文件夹 | {输出目录}/图表_JPG/ | 15张JPG,编号01-15 |
依赖安装
方式一:pip 安装(推荐,使用清华 TUNA 镜像加速)
# macOS / Linux
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple openpyxl matplotlib python-docx numpy
# Windows(CMD / PowerShell)
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple openpyxl matplotlib python-docx numpy
方式二:使用虚拟环境(推荐隔离安装)
# macOS / Linux
python3 -m venv .venv
source .venv/bin/activate
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple openpyxl matplotlib python-docx numpy
# Windows
python -m venv .venv
.venv\Scripts\activate
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple openpyxl matplotlib python-docx numpy
国内镜像备选
| 镜像源 | URL |
|--------|-----|
| 清华 TUNA(推荐) | https://pypi.tuna.tsinghua.edu.cn/simple |
| 阿里云 | https://mirrors.aliyun.com/pypi/simple |
| 中科大 | https://pypi.mirrors.ustc.edu.cn/simple |
跨平台支持
本技能脚本已适配 macOS、Windows、Linux 三大操作系统:
| 维度 | macOS | Windows | Linux |
|------|-------|---------|-------|
| Python 命令 | python3 | python 或 python3 | python3 |
| 路径分隔符 | / | \(脚本内用 os.path.join 自动处理) | / |
| 中文字体 | Arial Unicode MS / PingFang SC | Microsoft YaHei / SimHei | WenQuanYi Micro Hei / Noto Sans CJK SC |
| venv 激活 | source .venv/bin/activate | .venv\Scripts\activate | source .venv/bin/activate |
| pip 命令 | pip3 | pip | pip3 |
脚本内所有路径操作均使用 os.path.join() 和 os.makedirs(),不依赖特定操作系统的路径格式。
常见问题
- matplotlib中文乱码:脚本内置跨平台字体自动检测函数
setup_chinese_font(),按 macOS → Windows → Linux 顺序尝试系统可用字体。如仍乱码,手动安装对应系统的中文字体包 - Linux 安装中文字体:
sudo apt install fonts-wqy-microhei(Debian/Ubuntu)或sudo yum install wqy-microhei-fonts(CentOS) - Windows 字体缺失:Microsoft YaHei 随 Windows 系统自带,通常无需额外安装
- Word表头背景色XML解析错误:使用
OxmlElement("w:shd")而非parse_xml,避免命名空间问题 - ax.pie返回值解包错误:带
autopct参数时返回三元组(wedges, texts, autotexts),不带时返回二元组 - 产品未归类:检查原始产品名是否在 PRODUCT_MAP 中精确匹配,注意空格和标点
Scan to join WeChat group