当前位置:首页 > Python 工业工具 > 正文内容

Python晶圆良率分析实战:从数据清洗到可视化(附完整代码)

叶志辉2个月前 (06-29)Python 工业工具6

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源码+数据文件!

相关文章

Python+半导体数据工具完整自学路线(零基础→项目实战)

Python+半导体数据工具完整自学路线(零基础→项目实战)

Python+半导体数据工具完整自学路线(零基础→项目实战) 经常有人问我:我想学Python做FAB数据分析,从哪里开始? 今天我把完整路线画出来,从零基础到能独立做项目,按这个走,90天能出师。...

SPC/MES/FDC工具全家桶:工程师必备Python脚本合集

SPC/MES/FDC工具全家桶:工程师必备Python脚本合集

SPC/MES/FDC工具全家桶:工程师必备Python脚本合集 我在FAB干了15年,最值钱的东西不是经验,是一个攒了多年的Python工具箱。 今天把这个工具箱的核心部分分享出来,从数据采集到SP...

Python日报自动化:MES数据一键生成Excel报告(附完整源码)

Python日报自动化:MES数据一键生成Excel报告(附完整源码)

Python日报自动化:MES数据一键生成Excel报告(附完整源码) 1. 我的血泪史:每天2小时的日报工作 2018年,我在FAB做整合工程师的时候,每天早上第一件事不是分析数据,而是做日报。从M...

Python设备故障预测:XGBoost让FAB的设备维护从被动到主动

Python设备故障预测:XGBoost让FAB的设备维护从被动到主动

Python设备故障预测:XGBoost让FAB的设备维护从被动到主动 1. 问题背景:被动维修的代价 FAB里最贵的不是设备,是设备宕机造成的产能损失。一台光刻机价值$100M+,停机1小时损失约$...

工艺工程师学Python的6个正确姿势:别再走弯路了

工艺工程师学Python的6个正确姿势:别再走弯路了

工艺工程师学Python的6个正确姿势:别再走弯路了 1. 工艺工程师学Python的特殊性 工艺工程师学Python不是为了写程序,是为了解决工作中的问题。这个区别很重要:软件工程师追求代码漂亮,工...