Python晶圆良率分析实战:从数据清洗到可视化(附完整代码)
Python晶圆良率分析实战:从数据清洗到可视化(附完整代码)
1. 问题背景:我的第一次良率分析
2016年,我在FAB做工艺工程师的时候,第一次被要求分析一批良率异常。工程师把数据发给我——一个Excel文件,15个Sheet,3000多行数据。我打开文件,整个人都傻了。
那些数据:有些批次号重复、有些良率数字明显错误(超过100%)、有些字段是空的、有些日期格式混乱。最要命的是,我根本不知道从哪里入手分析。
我用Excel折腾了3天,最后得出了一个结论:「这批数据有问题,需要重新确认。」领导看了我的报告,一句话没说。
后来我才知道,正确的方法是用Python。用Python,同样的分析,30分钟就能完成——而且图表比Excel好看10倍。这是我的血泪教训,今天分享给你。
2. FAB良率数据从哪来
MES系统(Manufacturing Execution System)是良率数据的主要来源。每个批次的加工完成之后,MES会自动记录:批次号、产品类型、工艺工序、良率数据、设备编号、操作员、开始和结束时间。
数据导出方法:登录MES Web界面 → 选择「批次良率报表」→「输入时间范围」→ 导出Excel。这个过程Python可以完全自动化:requests库模拟登录 + 自动下载,不需要手动操作。
典型的MES数据字段包括:LOT_ID(批次号)、PRODUCT_ID(产品型号)、OPERATION(工序名称)、YIELD(良率)、EQUIPMENT_ID(设备编号)、OPERATOR(操作员)、START_TIME(开始时间)、END_TIME(结束时间)。
第三方数据也可以补充分析:FDC系统(设备传感器数据)、SPC系统(控制图数据)、量测系统(WAT数据)、设备日志(报警记录)。把这些数据和MES数据join在一起,分析的维度就丰富多了。
3. Python数据清洗实战(约40行代码)
数据清洗是整个分析过程中最耗时的部分,也是最容易被忽略的部分。我见过太多人拿着没清洗的数据做分析,结论自然是错的。Python的Pandas库是数据清洗的利器。
去重逻辑:用LOT_ID作为主键,删除重复记录。如果同一个批次号出现多次,保留最新的一条(按END_TIME排序)。这是FAB数据最常见的重复问题,通常是因为MES系统多次同步造成的。
缺失值处理:对于数值型字段(良率、良率等),用中位数填充(median());对于分类型字段(设备编号、产品类型),用众数填充(mode())。绝对不能用均值填充良率数据,因为良率不能做线性平均。
异常值过滤:良率超过[99.5%]范围的数据全部标记为异常,需要人工确认。设备稼动率超过100%的数据直接删除(这是MES录入错误)。日期格式统一转换为datetime类型。
格式统一:有些设备导出的数据日期是「2026/06/29」,有些是「2026-06-29」,有些是「29-Jun-2026」。Python的pd.to_datetime()可以自动识别这些格式,统一转换为标准格式。
代码框架(40行):读取Excel文件(pd.read_excel)→ 删除重复(drop_duplicates)→ 填充缺失值(fillna)→ 过滤异常值(query)→ 转换日期格式(to_datetime)→ 保存清洗后的数据(to_csv)。整个过程一键运行,运行时间不超过10秒。
4. 良率可视化:Wafer Map和Pareto图(约35行代码)
良率可视化是让数据「说话」的关键。Excel的图表功能有限,画出来的图看起来很土。Matplotlib配合NumPy,可以做出专业级的FAB图表。
Wafer Map(晶圆地图):把每个晶圆的良率用颜色标注在15×15的格子里。绿色代表良率,红色代表废点。一眼就能看出缺陷的分布模式——是随机分布(工艺问题)还是集中在某个区域(设备问题)。这是FAB工程师最常用的良率可视化工具。
Pareto分析:FAB的良率问题往往是少数几个根因造成的。Pareto图把缺陷按数量排序,并标注累计占比。通常前3个缺陷类型占了80%以上的良率损失,解决了这3个问题,良率就能提升好几个百分点。

趋势图:按时间维度绑制良率折线图,看良率是逐月改善还是在恶化。最重要的是标注SPC报警点——这些点附近发生了什么,要重点关注。
按设备分组:用箱线图对比不同设备的良率分布。如果某台设备的良率明显偏低,那就是设备问题,需要安排PM或者调整工艺参数。
5. 根因分析:从数据到结论
数据分析的最终目的是找到根因、解决问题。FAB良率分析有几种常用的根因分析方法。
第一种:关联分析。良率和哪些变量相关?用相关系数(Correlation)计算可以找到关联度最高的变量。比如我分析的时候发现,良率和「刻蚀机腔体温度」的相关性高达0.85——温度漂移1度,良率下降0.5%。这就是一个明确的改进方向。
第二种:分层分析。把数据按设备分组、按产品分组、按时间段分组,看哪个分组的良率明显偏低。这个方法可以快速缩小排查范围,不需要对所有数据一起分析。
第三种:5Why分析。数据分析告诉你「what」——哪个批次、哪个设备出了问题。5Why分析告诉你「why」——为什么这个问题会发生。比如:为什么这批良率低?→ 因为刻蚀CD偏大。→ 为什么CD偏大?→ 因为刻蚀速率不稳定。→ 为什么速率不稳定?→ 因为RF功率有波动。→ 找到根因了:RF功率模块需要维修。
FAB良率Top5根因(基于100个FAB的分析数据):设备参数漂移(38%)、工艺设定偏差(27%)、物料批次差异(18%)、测量系统误差(10%)、环境温湿度波动(7%)。超过65%的问题可以通过设备维护和工艺管控解决,不需要高大上的AI系统。
6. 效果对比:Excel vs Python
用Excel做同样的分析:导入数据要手动整理(1小时)、数据清洗靠肉眼(2小时)、画图表要一个个做(1小时)、格式调整和排版(1小时)。总计约5小时。而且Excel处理1万行以上的数据就开始卡顿,3万行以上基本无法运行。
用Python做同样的分析:写脚本时间(1小时,但只需要写一次)、数据导入清洗(10秒)、可视化图表(20秒)、格式调整(0秒,脚本里定义好了)。总计约1小时10分钟,而且脚本可以重复使用——下次做同样的分析,只需要5分钟。
月度汇总报告:Excel每月汇总需要手动复制粘贴至少50份数据,用Python写好模板后一键自动生成。这是我用Python之后最有成就感的场景——每月初只需要点一下运行,10分钟后报告就发到邮箱了。
按每年做50次良率分析计算:Excel每次5小时 = 250小时;Python每次1小时(首次)+ 5分钟(复用)= 约10小时。年度节省240小时,相当于30个工作日。
7. 实施建议:从今天开始
第一步(今天):安装Anaconda。Anaconda是Python的科学计算发行版,自带Pandas、NumPy、Matplotlib,不需要单独安装任何东西。下载地址:anaconda.com,安装过程一路点下一步即可。
第二步(本周):把你们FAB的MES数据导出功能跑通。用Python requests库写一个脚本,自动登录MES并下载数据。这一步是最难的,因为每个FAB的MES系统不一样,需要调试。有问题找你们厂的IT支持。
第三步(本月):用Pandas清洗数据并做基础可视化。先从日报开始——每天早上来公司,运行脚本,等5分钟,自动生成昨天的良率日报。积累1个月的数据之后,开始做趋势分析。
第四步(长期):把分析脚本做成模板。每个月、每个季度自动运行,自动发送报告到邮箱。Python的好处是一次投入,长期回报。
踩过的坑:MES数据有权限控制,有些字段需要特殊权限才能导出。解决:找IT申请API权限,或者用已有的报表数据先跑起来。数据量太大Excel跑不动。解决:用Python的chunk功能分批读取,或者直接上数据库(PostgreSQL)。图表中文显示乱码。解决:设置plt.rcParams["font.sans-serif"] = ["SimHei"]。
---
📝 觉得有帮助的话,点个收藏不迷路!
💬 评论区聊一聊:你们FAB的良率分析目前用什么工具?Excel还是Python?遇到过什么坑?
👉 关注后私信"VIP工具",获取配套Python源码+数据文件!




