多源数据合并与多维分析 · Multi-Source Data Merge & Analysis
填补现有数据分析技能链的最大缺口:多文件合并 → 清洗 → 多维分析 → 图表 → Excel/PDF报告,端到端一站式。
When to Use
当用户需要以下任一操作时加载本技能:
- 合并多个Excel文件(不同Sheet/列名不一致/格式差异)
- 对合并后的数据进行多维交叉分析(产品 × 地区 × 月份)
- 生成含图表的Excel分析报告
- 输出可直接插入经营分析PPT的PDF报告
触发词: 合并数据, 多文件合并, 数据分析, 销售分析, 多维分析, 经营分析, 合并Excel, 数据合并, merge Excel, cross analysis, multi-source
核心能力
| 步骤 | 能力 | 说明 | |------|------|------| | ① 合并 | 多文件/多Sheet Excel合并 | 模糊列名匹配(fuzzywuzzy ≥80%),自动跳过临时文件(~$) | | ② 清洗 | 数据质量提升 | 去重(关键字段组合)、缺失值(数值中位数/分类"未知")、日期标准化(YYYY-MM-DD) | | ③ 分析 | 多维交叉透视 | 产品×地区×月份三维度,环比/同比自动计算 | | ④ 图表 | 3张专业图表 | 柱状图(区域对比) + 折线趋势图(月度+均值线) + 环形图(产品占比) | | ⑤ 报告 | 5 Sheet Excel + PDF | Sheet1-合并数据 / Sheet2-汇总指标卡 / Sheet3-多维透视表 / Sheet4-图表 / Sheet5-分析结论 |
行业双模
| 模式 | 参数 | 核心KPI |
|------|------|--------|
| 快消/零售 | --industry retail | 销售额(万元)、环比增长%、同比增长%、毛利率%、退货率% |
| 制造业 | --industry manufacturing | 产量(件)、良率%、OEE%、停机率%、报废率% |
详见 references/industry-configs.md
制造业 KPI 自动推算公式
制造业模式下,以下 KPI 由原始字段自动推算(无需在源数据中预先计算):
| KPI | 公式 | 所需源字段 | 兜底策略 | |-----|------|-----------|---------| | 良率% | 合格数 ÷ 投料量 × 100 | 合格数 + 投料量 | 无合格数时:(产量 - 废品数) ÷ 投料量 | | 报废率% | 废品数 ÷ 投料量 × 100 | 废品数 + 投料量 | — | | 停机率% | 停机时长 ÷ 计划生产时间 × 100 | 停机时长 + 计划生产时间 | 无计划时间时跳过 | | OEE% | 可用率 × 质量率 × 100 | 计划生产时间 + 停机时长 + 合格数/产量 | 可用率 = (计划时间 - 停机) ÷ 计划时间;质量率 = 合格数 ÷ 产量 |
决策速查表(与现有技能的协作边界)
| 用户需求 | 路由 |
|----------|------|
| 多文件合并 + 多维分析 → Excel/PDF报告 | 本技能 |
| 单文件深度统计分析(描述/对比/趋势/异常) | data-analyst-pro |
| 数据质量诊断(6项结构化检查) | data-prep |
| 格式转换/编码修复/批量处理 | data-clean-transform |
| 月度经营分析会(固定模板+三层指标体系) | business-operations-analysis |
| 单文件自动化财务/业务分析 | auto-data-analysis-claw |
执行流程
⚠️ 前置要求
- 确认用户提供了Excel文件夹路径(含≥1个
.xlsx或.xls文件) - 确认用户指定了行业模式(retail/manufacturing)或根据数据特征自动判断
- ⚠️ 安装依赖:
pip install -r scripts/requirements.txt
Step 1: 定位文件夹 + 安装依赖
ls "{用户提供的文件夹路径}"/*.xlsx
pip install pandas openpyxl matplotlib numpy fuzzywuzzy python-Levenshtein
Step 2: 执行分析
python scripts/merge_and_analyze.py \
--folder "{文件夹路径}" \
--industry {retail|manufacturing} \
--output "{输出路径}/分析报告.xlsx"
如需PDF:
python scripts/merge_and_analyze.py \
--folder "{文件夹路径}" \
--industry retail \
--output "{输出路径}/分析报告.xlsx" \
--pdf
Step 3: 交付结果
使用 deliver_attachments 交付Excel报告和图表。
输出文件结构
输出目录/
├── 分析报告.xlsx ← 5 Sheet Excel报告
├── 分析报告.pdf ← (可选) PDF报告
└── charts/
├── chart_bar_region.png ← 区域对比柱状图
├── chart_line_monthly.png ← 月度趋势折线图
└── chart_donut_product.png ← 产品占比环形图
Excel 5 Sheet 说明
| Sheet | 内容 | 格式 | |-------|------|------| | 合并数据 | 全量清洗后的合并数据,含"数据来源"标注列 | 冻结表头、自动筛选、斑马纹 | | 汇总指标卡 | 总销售额、环比、同比、区域数、产品数、毛利率、退货率 | 两列(指标名/值) | | 多维透视表 | 产品×地区×月份交叉透视矩阵 | 冻结行/列标题 | | 图表 | 嵌入3张PNG图表(柱状+折线+环形) | openpyxl嵌入式图片 | | 分析结论 | 3-5条洞察 + 行动建议 | 序号+内容,自动换行 |
错误处理与兜底策略
| 错误场景 | 处理方式 |
|----------|----------|
| 文件夹不存在 | 提示用户确认路径,不继续执行 |
| 文件夹无Excel文件 | 提示"未发现Excel文件",检查隐藏文件和临时文件 |
| 输出与输入同目录 | 自动跳过输出文件自身 + 含"分析报告/report"关键词的文件,防止自吞 |
| 所有列名未匹配 | 打印警告并跳过该Sheet,不阻塞合并 |
| 无分析维度列(区域/产品/月份) | 跳过透视分析,输出合并数据和基本统计 |
| 图表生成失败(如无区域列) | 跳过该图表,继续生成其他图表 |
| PDF生成失败(fpdf2未安装) | 只交付Excel,提示 pip install fpdf2 Pillow |
| fuzzywuzzy未安装 | 降级为精确匹配列名 |
| 内存不足(大量文件) | 分批处理,每批最多10个文件 |
References 索引
| 文件 | 内容 | 何时加载 |
|------|------|----------|
| references/industry-configs.md | 快消/零售 + 制造业KPI定义与公式 | 需要了解指标体系或扩展新行业时 |
| references/column-mapping.md | 模糊列名匹配词典(中英文同义词) | 需要扩展列名识别规则时 |
依赖声明
pandas>=2.0 # 数据处理与合并
openpyxl>=3.1 # Excel读写
matplotlib>=3.8 # 图表生成
numpy>=1.24 # 数值计算
fuzzywuzzy>=0.18 # 列名模糊匹配
python-Levenshtein>=0.25 # fuzzywuzzy加速
fpdf2>=2.8 # PDF生成(纯Python)
Pillow>=9.0 # 图片处理
安装命令:
pip install pandas openpyxl matplotlib numpy fuzzywuzzy python-Levenshtein fpdf2 Pillow
输入案例
案例1:快消/零售 — 多区域月度销售合并分析
输入示例
我有6个Excel文件放在 D:\公司\月度销售数据\,分别是华东、华南、华北、华中、西南、西北各区域1-6月销售数据。每个文件的Sheet名不一样,有的叫"销售明细",有的叫"Sheet1",列名也略有差异(有的写"产品",有的写"产品名称")。帮我合并这些数据,按产品×区域×月份做交叉分析,生成带图表的Excel报告和PDF。
输出示例
处理过程:
python scripts/merge_and_analyze.py --folder "D:\公司\月度销售数据" --industry retail --top-n 8 --output "D:\公司\月度销售数据\销售分析报告.xlsx" --pdf- 合并6个文件共14个Sheet,模糊匹配列名("产品"→"产品名称"、"收入"→"销售额"),合并后共1,248行
- 清洗去重12行,缺失值补全23处(中位数),日期统一为YYYY-MM
- 三维透视分析:6个产品 × 6个区域 × 6个月矩阵
- 生成3张图表 + 5条洞察
输出文件:
D:\公司\月度销售数据\销售分析报告.xlsx(5 Sheet,含图片)D:\公司\月度销售数据\销售分析报告.pdfD:\公司\月度销售数据\charts\(3张PNG图表)
核心结论:
- 华东贡献最高(42%销售额),华南环比增长最快(+15.3%)
- 产品A占总量31%,但毛利率仅22%(低于均值28%),建议优化定价或成本结构
- 6月退货率突增至4.8%,根因在华东区产品B品质批次问题
案例2:制造业 — 多工厂产量与良率分析
输入示例
3个工厂(一厂、二厂、三厂)的月度生产数据在 C:\工厂数据\2026\,每个工厂一个Excel文件,内含产量、良率、停机时长等。帮我合并分析,输出各工厂产量对比和月度良率趋势。
输出示例
处理过程:
python scripts/merge_and_analyze.py --folder "C:\工厂数据\2026" --industry manufacturing --output "C:\工厂数据\2026\生产分析报告.xlsx"- 合并3个文件共3个Sheet,匹配"产出"→"产量"、"合格率"→"良率"
- 三维透视分析:15个产品型号 × 3个工厂 × 6个月
- 生成3张图表(工厂产量对比柱状图、月度良率趋势折线图、产品产量占比环形图)
输出文件:
C:\工厂数据\2026\生产分析报告.xlsx(5 Sheet)C:\工厂数据\2026\charts\(3张PNG图表)
核心结论:
- 二厂整体良率最高(97.3%),一厂最低(94.1%),差距3.2个百分点
- 3月全厂良率骤降至91.5%(一厂设备大修),影响持续至4月
- 产品X报废率最高(8.7%),建议重点排查该产品工艺流程
版本: 1.0.4 类型: Workflow(工作流型) 目标用户: 商业数据分析师、运营管理人员、工厂生产主管 v1.0.4 新增: 用 fpdf2 纯Python生成PDF(替换外部markitdown调用),PDF含封面+KPI卡片+3张嵌入图表+洞察+数据来源脚注,零外部依赖 v1.0.3 新增:
--top-n参数——环形图产品分组数可配置(默认6),200+型号工厂可设--top-n 20v1.0.2 新增: 制造业KPI自动推算——良率%、报废率%、停机率%、OEE% 按标准公式从原始字段自动计算,含三级兜底 v1.0.1 修复: 输出与输入同目录时跳过输出文件自身,防止"自吞"上次生成的报告
Scan to join WeChat group