城市运营工单分析
Instructions
当用户要求分析城市运营工单数据时,按以下步骤执行:
1. 读取数据结构
优先使用 Python + pandas 读取 Excel,先确认列名、数据类型和样本数据:
import pandas as pd
df = pd.read_excel('file.xlsx')
print(df.columns.tolist())
print(df.shape)
print(df.head())
print(df.dtypes)
若关键字段缺失或命名不一致,先列出可用列名并向用户确认字段映射,不要臆造字段。关键字段包括:
- 周归属字段:
上周、本周,或可辅助判断的 归属周 - 工单状态字段
- 门店字段
- 工单类型字段
- 维修人员字段:默认使用
当前审批人 - 工时字段或可计算工时的起止时间字段
2. 默认统计范围
默认统计本周数据,且必须包含与上周的周对比。数据表中有 上周 和 本周 标记列(值为 1 表示归属该周):
- 始终统计
本周 == 1 的数据作为主数据 - 同时必须计算与上周的周对比:对比
上周 == 1 的数据,计算变化量和周对比变化率 - 归属周字段
归属周 可作为辅助判断(格式如 W26-05-08)
3. 工单类型硬性过滤
在任何统计、图表、表格、结论生成之前,必须先执行工单类型过滤。允许统计的工单类型只有以下 4 类:
ALLOWED_TYPES = {
"1.维修维保": "维修维保",
"3.弱电监控": "弱电监控",
"9.其他": "其他",
"10.轻改工程": "轻改工程",
}
执行规则:
- 先将原始工单类型字段映射为标准类型名称
- 只允许
ALLOWED_TYPES 中的类型进入类型统计、人员统计、门店统计、状态统计和结论分析 4.品相管理、11.总部集采 等其他类型必须从统计数据集中排除- 禁止在图表、表格、结论中展示未授权类型
- 若原始数据中存在其他类型,只可在数据质量说明中提示“已排除其他类型 X 条”,不得纳入业务统计
- 所有周对比必须分别基于过滤后的
上周 与 本周 数据计算 - 除数据质量说明外,后续所有统计必须使用过滤后的数据集,不得直接使用原始全集
推荐处理方式:
df_all = pd.read_excel(file)
df_filtered = df_all[df_all[type_col].isin(ALLOWED_TYPES.keys())].copy()
df_filtered["标准工单类型"] = df_filtered[type_col].map(ALLOWED_TYPES)
4. 周对比分析
所有统计维度均需计算周对比,包括:
- 总量周对比:本周工单总数 vs 上周,计算变化量和周对比率
- 状态周对比:按工单状态(处理中/已完成/已撤销/已拒绝)分别计算周对比
- 类型周对比:按以下固定工单类型分别计算总工单数、处理中工单数的周对比:
- 维修维保(对应原始字段
1.维修维保) - 弱电监控(对应原始字段
3.弱电监控) - 其他(对应原始字段
9.其他) - 轻改工程(对应原始字段
10.轻改工程)
注意:4.品相管理、11.总部集采 等类型不纳入统计,图表和表格中只展示以上 4 个类型
- 门店周对比:按门店分别计算总工单数、完成率的周对比
- 维修人员周对比:按维修人员(字段
当前审批人)分别计算: - 只统计以下名单内的维修人员,其他人员不纳入维修人员维度统计:
严、封、周、邓、唐、范、陈
- 必须列出名单中所有人员,本周无工单的显示为 0,不得隐藏
- 总工单数、处理中工单数的周对比
- 完成率、平均工时的周对比
- 平均工时优先使用现成工时字段;如无工时字段但有创建时间和完成时间,则按时间差计算;若数据缺少可用字段,在结论中标注“缺少工时字段,未计算平均工时”
- 各类型工单数周对比:按维修维保、弱电监控、其他、轻改工程分别统计每人上周和本周各类型工单数量,并计算每个类型的变化量和周对比率
- 识别工作量过载或效率异常的维修人员
- 完成率周对比:本周完成率 vs 上周完成率,计算完成率百分比差值
周对比计算公式:
- 周对比率 = (本周值 - 上周值) / 上周值 * 100%
- 完成率变化 = 本周完成率 - 上周完成率,展示为百分比差值(例如从 80% 到 85%,展示为 +5%)
- 上周值为 0 时,周对比率标记为 "新增" 而非除零
5. 分析数据分布
对关键字段进行统计:
- 分类字段:使用
value_counts() 统计分布 - 数值字段:使用
describe() 查看基本统计 - 时间字段:确认时间范围和格式
- 空值检查:使用
isna().sum() 查看缺失情况
6. 生成对比统计
如果用户要求跨维度对比(如时间、区域、类型):
- 明确对比维度(如上周 vs 本周、A 区域 vs B 区域)
- 按维度分组统计数量、均值或占比
- 计算变化量、变化率,标注上升/下降趋势
7. 生成交互式图表
使用 ECharts + Tailwind CSS 生成 HTML 文件,报告结构必须包含以下所有默认板块,不得遗漏。若某个默认板块所需字段缺失或数据为空,不得删除该板块,应在对应位置显示缺失原因或无数据提示,并在结论中说明。
关键指标卡片
- 总览卡片:本周工单总量、处理中、已完成、完成率(均含上周值和周对比)
- 维修人员卡片:有工单人数、维修人员处理中总数、人均工单、最高负荷人员及单量
图表(全部必须输出)
- 工单类型周对比(分组柱状图):上周 vs 本周,按维修维保/弱电监控/其他/轻改工程
- 工单状态分布(环形图):本周处理中/已完成/已撤销/已拒绝占比
- 维修人员各类型工单周对比(堆叠/分组组合柱状图):显示名单所有17人,按维修维保/弱电监控/其他/轻改工程分别展示上周与本周工单数对比
- 维修人员处理中工单周对比(分组柱状图):上周处理中 vs 本周处理中,显示所有17人
- 门店工单量周对比(分组柱状图):上周 vs 本周,所有门店,按本周数量降序
明细表格
- 维修人员明细表格:列出名单所有17人,含上周总计、本周总计、变化、各类型工单数周对比(维修维保/弱电监控/其他/轻改工程分别展示上周、本周、变化、周对比)、处理中、完成率
- 门店明细表格:所有门店,含上周工单、本周工单、变化、周对比、本周完成率
补充分析
- 在默认板块之外,可根据用户问题、数据特征或异常发现,补充额外图表、表格或分析模块
- 补充模块不得替代或删除默认板块,应放在“补充分析”区域中,并说明新增原因
HTML 模板规范:
- 引入 ECharts CDN:
https://cdn.jsdelivr.net/npm/echarts@5.4.3/dist/echarts.min.js - 使用 Tailwind CSS 作为样式方案(通过 CDN 引入
https://cdn.tailwindcss.com) - 卡片式布局,所有卡片高度自适应(由内容决定,不设置固定高度)
- 图表容器设置合适高度,但外层卡片高度自适应
- 人员/门店图表需支持横向滑动(dataZoom),避免标签重叠
- 页面响应式,图表监听
window.resize - 表格中变化趋势用颜色区分
8. 输出分析结论
用文字总结关键发现,结构如下:
### 核心发现
**1. [对比主题]**
- [关键数据点]
- [关键数据点]
**2. [分布主题]**
- [关键数据点]
- [关键数据点]
**风险提示**:[如有异常数据或趋势,给出建议]
Output Format
图表 HTML 文件保存到工作目录,命名格式:{主题}数据分析图表.html
分析结论直接输出在对话中,包含:
- 核心指标摘要(含周对比标注)
- 关键周对比数据摘要
- 文字总结
Dependencies
- 优先:Python + pandas + openpyxl(读取 Excel、分组统计、计算周对比)
- 可替代:任何能可靠读取 Excel 并完成分组统计的表格处理工具
- ECharts(通过 CDN 引入,无需本地安装)
Notes
- 不要安装 matplotlib 等本地绘图库(环境可能缺失)
- 优先使用 HTML + ECharts 方案,兼容性更好
- 如果 Excel 包含多个 sheet,默认读取第一个;如需指定,询问用户
- 保持图表简洁,页面必须包含本技能要求的全部图表和表格