夜雨聆风学习资料网

ARTICLE · 995947

Python+Excel自动生成良率周报,全程零手动

Python+Excel自动生成良率周报,全程零手动
每周五下午,质量部最怕的事就是做良率周报。从 MES 导一堆 CSV,挨个产品线复制投入和不良数,算良率、算 DPPM、按周汇总、再手动画趋势图,复制粘贴两小时,中间错一个单元格,整张表全红。我见过太多工程师把一下午耗在这上面,还不敢拍胸脯说数字一定对。

其实这事 Python 跑一遍就完事。把 MES 导出的原始数据喂进去,脚本自动算良率/DPPM、按周和产品汇总,顺手把红黄绿条件格式和折线趋势图都画好,3 秒出一个带格式的 Excel 周报。本文把这套脚本和模板直接给你,全程零手动,你只改数据源路径。

解决方案概览

核心就一句:原始数据一进一出,计算与出表全交给 Python + openpyxl。三张表(原始数据 / 周报汇总 / 良率趋势)一次生成,条件格式和折线图自动带上。你要维护的只有一件事——数据源从哪来。

分步实操

第一步:准备原始数据(MES 导出即可)

脚本吃的是最朴素的表格:列 = 周、产品线、投入数、不良数。MES 导出的 CSV 本来就是这个结构,不用任何预处理。

# 演示用随机生成;真实环境替换为读 CSV 即可:# import csv# raw = [(r['周'], r['产品线'], int(r['投入数']), int(r['不良数']))#        for r in csv.DictReader(open('mes_export.csv', encoding='utf-8'))]

第二步:Python 一键算良率 + 出 Excel

良率和 DPPM 的计算就一行,剩下的交给 openpyxl 写表:

defcalc(inp, defect):    yield_rate = (inp - defect) / inp        # 一次直通良率    dppm = defect / inp * 1_000_000# 每百万不良return yield_rate, dppm

汇总用字典累加投入/不良,再统一 calc,避免逐行算丢精度。完整脚本 build_yield_weekly_report.py 会生成三张表并保存为 xlsx,你拿去改路径就能跑。

第三步:Excel 周报长这样(自动带格式)

  • 原始数据表:每条记录的良率(百分比)、DPPM 自动算出
  • 周报汇总表:按周 / 按产品两张小表,良率列带红黄绿条件格式(<95% 红、95–98% 黄、≥98% 绿)
  • 良率趋势表:周×产品矩阵 + 折线图,一眼看哪条线在往下掉

第四步:定时自动跑,连"运行"都省了

脚本写完后,用 Windows 任务计划或 Linux crontab 每周五 17:00 自动执行,周报自己躺在指定文件夹。进阶还能脚本跑完自动发邮件或传共享盘。

# Windows 任务计划 / crontab 触发(每周五 17:00):# python build_yield_weekly_report.py

关键参数说明

  • 良率口径:本文用一次直通良率 (投入-不良)/投入,对应 CP/FT 的 pass 口径;若你们用 FPY(首次良率)或含返工,改 calc 的分子即可
  • DPPM 公式:不良/投入×1,000,000,和本系列前几篇(DPPM/良率)口径一致,方便横向对比
  • 条件格式阈值:红 <95% / 黄 95–98% / 绿 ≥98%,可按你们厂目标线改脚本里的 0.95 / 0.98
  • 趋势图 Y 轴:锁定 90%–100% 区间(scaling.min/max),掉量才看得清,不会因整体高位而被压平

常见问题和避坑提醒

  • 数据源口径要对齐:MES 导出的"投入"是投测试数还是投线数?良率能差好几个点,先和 PE 对齐定义再写脚本
  • 别拿 FT 良率当出货良率:周报若给老板看,注明是 CP/FT 哪一段,避免被追着问
  • 除零保护:某周某线没投产 inp=0,calc 会除零;脚本已加 if inp else 0,自己写也要防
  • 条件格式阈值别照抄:每厂目标线不同,B 线电源 IC 可能 95% 就算优,改阈值再下发
  • 图表数据范围锁死:周数变了要同步改 Reference 的 max_row,否则图不更新;建议改成取动态末行
  • 别把涉密明细传外网:脚本在本地/内网跑,原始数据别过任何外部 API

总结

良率周报本质是"固定计算 + 固定出表",最适合交给脚本。Python 读 MES 导出 → 算良率/DPPM → openpyxl 出三表带格式带图 → 任务计划定时跑,全程零手动。脚本和模板我都放好了,换上自己数据源路径就能用。

领取资料:公众号后台回复 【良率周报Python】,自动发送 build_yield_weekly_report.py(可直接运行)+ 良率周报_示例.xlsx(带条件格式和折线图),照着改路径即可上岗。

半导体工程师 AI 提效系列 · 第 13 篇(承接《半导体行业常用英文缩写大全》)。觉得有用点个"在看",转发给每周五做周报的同事,帮 TA 省下两小时。

相关学习资料