4. 数据准备与清洗:JMP的“表”与“列”操作,Minitab的“工作表”与“堆叠/拆分”功能

在半导体良率分析中,原始数据往往来自多个机台、多个批次,格式混乱、结构不统一。数据准备与清洗是良率分析的第一步,也是决定分析质量的关键环节。JMP 和 Minitab 在数据整理上各有侧重:JMP 以“表”和“列”为核心,操作直观灵活;Minitab 以“工作表”为基础,通过“堆叠/拆分”实现数据结构转换。本章将系统对比两者的数据准备方法,帮助你在实际工作中高效完成数据清洗。

核心观点: JMP 的“列”操作更适合交互式探索和快速清洗,Minitab 的“堆叠/拆分”更适合批量结构化转换。两者协同使用,可覆盖 90% 以上的良率数据准备场景。

4.1 JMP 的“表”与“列”操作

JMP 的数据表(Data Table)是一个集数据存储、编辑、可视化于一体的交互式环境。每一列(Column)不仅存储数据,还携带属性(如数据类型、建模类型、公式、值标签等),这使得数据清洗可以在“列”层面直接完成。

4.1.1 表操作:数据源管理与合并

JMP 的表操作主要包括数据表的创建、连接、合并和子集提取。在良率分析中,最常用的是“表 > 连接”(Join)和“表 > 子集”(Subset)。

操作 菜单路径 良率应用场景
连接(Join) 表 > 连接 将批次信息表与测试数据表按批次号匹配合并
子集(Subset) 表 > 子集 筛选出特定机台或特定产品的良率数据
堆叠(Stack) 表 > 堆叠 将多列测试参数合并为一列,便于后续分析
拆分(Split) 表 > 拆分 将一列分类数据拆分为多列,用于分组对比
技巧: 在 JMP 中,使用“表 > 连接”时,建议先对关键列(如批次号、晶圆ID)进行排序,可大幅提升连接速度。连接结果默认生成新表,不会覆盖原始数据。

4.1.2 列操作:属性设置与公式清洗

JMP 的列操作是其数据清洗的核心优势。右键点击列标题,即可快速设置列属性、添加公式、重编码异常值。

  • 列属性设置: 数据类型(数值/字符/多值)、建模类型(连续/名义/有序)、值标签(如将 0/1 映射为 Pass/Fail)。
  • 公式列: 通过公式编辑器创建新列,例如计算良率 = Pass_Count / Total_Count,或根据测试条件自动分类。
  • 列重编码: 使用“列 > 重编码”将异常值(如 -999、9999)统一标记为缺失值,避免影响后续分析。
  • 列筛选: 在列面板中勾选/取消勾选列,快速隐藏无关字段,聚焦关键参数。
// JMP 公式列示例:根据测试结果自动标记良品/不良品
If( :Test_Result == 1, "Pass", "Fail" )
注意: JMP 的公式列是动态计算的,修改原始数据后公式列会自动更新。但如果数据量超过 10 万行,建议将公式列“锁定”为静态值(列 > 公式 > 锁定),以提升后续分析速度。

4.1.3 JMP 数据清洗流程 SVG 图

JMP 数据清洗流程 原始数据导入 表连接/合并 列属性设置 公式列创建 异常值重编码 子集提取 清洗完成

4.2 Minitab 的“工作表”与“堆叠/拆分”功能

Minitab 的数据组织以“工作表”(Worksheet)为单位,每个工作表包含若干列(C1, C2, ...)和行。Minitab 的数据准备更强调结构转换,其“堆叠”(Stack)和“拆分”(Unstack)功能是良率数据清洗的两大利器。

4.2.1 工作表管理:数据导入与列操作

Minitab 的工作表操作包括数据导入、列命名、列类型设置和列计算。与 JMP 不同,Minitab 的列操作更偏向批量和脚本化。

操作 菜单路径 说明
数据导入 文件 > 打开工作表 支持 Excel、CSV、文本文件,可指定导入范围
列命名 双击列标题 建议使用英文或拼音,避免特殊字符
列类型设置 数据 > 更改数据类型 数值/文本/日期/时间
列计算 计算 > 计算器 支持函数、条件判断、随机数生成

4.2.2 堆叠(Stack):多列合并为一列

在良率分析中,经常遇到多个测试参数分别存储在不同列的情况(如 CP1、CP2、CP3 分别代表三次测试的良率)。堆叠操作可以将这些列合并为一列,同时生成一个“下标”列来标识原始列名。

// Minitab 堆叠操作示例
// 原始数据:C1(批次), C2(CP1), C3(CP2), C4(CP3)
// 堆叠后:C1(批次), C5(测试阶段), C6(良率)
// 操作路径:数据 > 堆叠 > 列
// 堆叠列:C2 C3 C4
// 存储堆叠数据到:新工作表
// 存储下标到:C5(测试阶段)
应用场景: 当需要将多个测试站点的良率数据合并进行方差分析(ANOVA)或控制图分析时,堆叠是必须的前置步骤。堆叠后的数据格式符合大多数统计模型的要求。

4.2.3 拆分(Unstack):一列拆分为多列

拆分是堆叠的逆操作。当数据以“长格式”存储(一列包含所有测试阶段,另一列包含对应良率),需要按阶段拆分为多列进行对比分析时,使用拆分功能。

// Minitab 拆分操作示例
// 原始数据:C1(批次), C2(测试阶段), C3(良率)
// 拆分后:C1(批次), C4(CP1), C5(CP2), C6(CP3)
// 操作路径:数据 > 拆分 > 列
// 拆分列:C3(良率)
// 分组列:C2(测试阶段)
// 分组顺序:CP1 CP2 CP3
注意: 拆分操作要求分组列中的每个组在原始数据中都有对应的行。如果某个批次缺少某个测试阶段的数据,拆分后会出现缺失值(*),需在后续分析中处理。

4.2.4 Minitab 堆叠/拆分流程 SVG 图

Minitab 堆叠与拆分流程 多列宽格式数据 堆叠(Stack) 长格式数据 长格式数据 拆分(Unstack) 多列宽格式数据 数据格式转换 堆叠:多列 → 一列 + 下标列 拆分:一列 + 分组列 → 多列 适用于 ANOVA、控制图、回归分析

4.3 JMP 与 Minitab 数据准备功能对比

为了帮助你在实际工作中快速选择工具,下表从多个维度对比 JMP 和 Minitab 在数据准备与清洗方面的差异。

对比维度 JMP Minitab
数据表结构 列携带属性(类型、公式、标签),交互性强 列以 C1/C2 编号为主,命名需手动设置
列操作方式 右键菜单 + 列面板,可视化程度高 菜单命令 + 计算器,适合批量处理
堆叠/拆分 表 > 堆叠 / 表 > 拆分,支持多列同时操作 数据 > 堆叠 / 数据 > 拆分,需指定分组列
公式列 动态公式,自动更新,支持条件判断 计算器生成静态列,需手动重新计算
异常值处理 列 > 重编码,支持条件筛选和批量替换 数据 > 条件格式,或使用计算器 IF 函数
数据合并 表 > 连接,支持左连接、右连接、内连接 数据 > 合并工作表,需指定关键列
适用场景 交互式探索、快速清洗、小批量数据 批量处理、标准化流程、大批量数据
协同建议: 在良率分析项目中,建议先用 JMP 进行数据探索和快速清洗(利用其列属性和公式列的灵活性),再用 Minitab 进行批量结构转换(堆叠/拆分)和标准化分析。两者结合,可显著提升数据准备效率。

4.4 良率数据清洗实战案例

假设我们有一份半导体测试数据,包含以下字段:批次号(LotID)、晶圆编号(WaferID)、测试站点(Site)、测试参数(Param1~Param10)和最终良率(Yield)。数据中存在缺失值、异常值和格式不一致问题。

4.4.1 JMP 清洗步骤

  1. 导入数据: 文件 > 打开,选择 CSV 文件。
  2. 设置列属性: 将 LotID 和 WaferID 设为“名义”类型,Yield 设为“连续”类型。
  3. 创建公式列: 添加新列“良率等级”,公式为 If( :Yield >= 0.95, "A", If( :Yield >= 0.85, "B", "C" ) )。
  4. 重编码异常值: 选中 Yield 列,列 > 重编码,将 -999 和 9999 替换为缺失值。
  5. 子集提取: 表 > 子集,筛选出 Site = "CP1" 的数据,用于后续分析。

4.4.2 Minitab 清洗步骤

  1. 导入数据: 文件 > 打开工作表,选择同一 CSV 文件。
  2. 列命名: 双击列标题,将 C1~C13 分别命名为 LotID、WaferID、Site、Param1~Param10、Yield。
  3. 堆叠参数列: 数据 > 堆叠 > 列,将 Param1~Param10 堆叠为一列“ParamValue”,下标列命名为“ParamName”。
  4. 拆分站点数据: 数据 > 拆分 > 列,将 Yield 按 Site 拆分为 CP1_Yield、CP2_Yield、CP3_Yield。
  5. 缺失值处理: 计算 > 计算器,使用 IF 函数将异常值替换为缺失值符号 *。
案例总结: JMP 在数据探索和列级清洗上更灵活,适合快速发现数据问题;Minitab 在结构转换和批量处理上更高效,适合标准化流程。两者结合使用,可以在 10 分钟内完成原本需要 1 小时的数据准备工作。

4.5 数据准备常见问题与避坑指南

  • 缺失值处理: 不要直接删除含缺失值的行,先分析缺失模式(随机缺失/系统缺失),再决定填充或删除。
  • 数据类型错误: 良率数据应为数值型,如果导入后显示为文本,检查原始数据中是否包含“%”符号或空格。
  • 列名冲突: 合并多个数据表时,确保关键列名一致,否则连接结果可能出错。
  • 堆叠/拆分顺序: 堆叠时注意下标列的顺序,拆分时确保分组列的值唯一且完整。
  • 备份原始数据: 无论使用 JMP 还是 Minitab,始终保留一份原始数据副本,避免清洗操作不可逆。
重要提醒: 在半导体良率分析中,数据清洗的每一步都应记录在案(如使用 JMP 的“表 > 源”属性或 Minitab 的“项目历史”),确保分析过程可追溯、可复现。这是通过 GMP 和 ISO 审核的基本要求。