第二章 测试数据分析基础:数据采集方法、数据清洗与标准化

各位工程师朋友,大家好。我是你们的老朋友,一个在芯片测试行业摸爬滚打了十几年的老兵。今天咱们聊聊测试数据分析的基础。说白了,就是拿到一堆传感器数据后,怎么把它变成能用的、靠谱的信息。

我见过太多人,一上来就搞什么高大上的算法,结果数据本身都是脏的、乱的。你想想看,垃圾数据进去,再牛的模型也只能输出垃圾结果。所以,这一章咱们把地基打牢。

2.1 数据采集方法:源头决定质量

数据采集,听起来简单,不就是把传感器读数记下来吗?其实门道不少。我个人的习惯是,在项目开始前,先花半天时间把采集方案想清楚。这比后面花几天去补数据要划算得多。

2.1.1 常见的采集方式

  • 实时采集:通过I2C、SPI等接口,直接读取传感器寄存器。适合高速、连续监测的场景。
  • 批量采集:先把数据存到传感器内部的FIFO里,然后一次性读出来。省电,适合物联网设备。
  • 触发采集:设定一个阈值,比如加速度超过2g时才开始记录。适合捕捉异常事件。
我的经验: 在采集温度传感器数据时,我建议加上一个简单的硬件滤波电容。有一次我在产线上发现数据跳变严重,排查了半天,最后发现是电源纹波干扰。加了个0.1uF的电容,问题就解决了。

2.1.2 采样率与分辨率的选择

采样率不是越高越好。你想想看,一个室温传感器,每秒采1000次有意义吗?浪费存储和功耗。我一般遵循“奈奎斯特定理”的工程简化版:采样率至少是信号最高频率的5倍,留点余量。

传感器类型 典型信号频率 推荐采样率
温度传感器 0.01 Hz 1 Hz
加速度计 50 Hz 250 Hz
麦克风 4 kHz 20 kHz

2.2 数据清洗:把脏数据挡在门外

数据采集回来,别急着分析。先看看有没有“坏蛋”混进来。数据清洗,说白了就是三件事:处理缺失值、干掉异常值、统一格式。

2.2.1 缺失值处理

为什么会缺失?可能是传感器没响应,也可能是通信丢包了。我遇到过最离谱的一次,是焊点虚焊,导致数据间歇性丢失。

处理缺失值,常用的方法有几种:

  • 直接删除:如果缺失比例很小(比如<5%),直接删掉那几行数据,简单粗暴。
  • 填充法:用均值、中位数或者前一个有效值填充。我个人习惯用中位数,因为它不受极端值影响。
  • 插值法:用前后数据拟合出一个值。适合变化缓慢的信号,比如温度。
避坑指南: 我曾经用均值填充缺失的温度数据,结果把一次真实的温度突变给抹平了。后来我改用线性插值,才保留了那个异常点——后来发现那正是芯片过热的早期信号。

2.2.2 异常值处理

异常值,就是那些明显偏离正常范围的数据点。比如一个室温传感器,突然读出来150度,那肯定是出问题了。

怎么判断异常?我常用两种方法:

  1. 3σ原则:数据在均值±3倍标准差之外,就算异常。适合正态分布的数据。
  2. 箱线图法:用四分位数来界定。超出上下边缘的点就是异常。这个方法更稳健,不受极端值影响。
# Python示例:用3σ原则检测异常值
import numpy as np

data = np.array([25.1, 25.3, 25.0, 150.2, 24.9, 25.2])
mean = np.mean(data)
std = np.std(data)

# 定义上下限
lower = mean - 3 * std
upper = mean + 3 * std

# 找出异常值
anomalies = data[(data < lower) | (data > upper)]
print("异常值:", anomalies)  # 输出:[150.2]
注意: 别把所有的异常值都删掉。有些异常值其实是真实信号,比如设备故障前的预兆。我建议先标记出来,再结合上下文判断。

2.3 数据标准化与归一化:让数据站在同一起跑线

不同传感器的量纲不一样。比如压力传感器读数是0-1000 kPa,温度传感器是-40到85度。直接放一起分析,压力数据会把温度数据“吃掉”。

所以,我们需要把数据缩放到一个统一的尺度。常用的方法有两种:

2.3.1 归一化(Min-Max Scaling)

把数据压缩到[0, 1]区间。公式很简单:

X_norm = (X - X_min) / (X_max - X_min)

适合数据分布比较均匀的情况。但有个缺点:如果数据里有极端值,归一化后大部分数据会被挤到很小的区间里。

2.3.2 标准化(Z-score Normalization)

把数据变成均值为0、标准差为1的分布。公式:

X_std = (X - mean) / std

这个更常用。它不受极端值影响,而且保留了数据的分布形状。我个人的习惯是,只要不是特别要求,一律用标准化。

小技巧: 在芯片测试中,我经常把标准化后的数据画成直方图。如果形状像钟形,说明测试过程稳定。如果出现双峰,那可能是有两个不同的批次混在一起了。

2.4 本章知识体系

下面这张图,是我自己总结的测试数据分析基础流程。你可以把它当作一个检查清单,每次做分析前过一遍。

测试数据分析基础流程 数据采集 实时/批量/触发 数据清洗 缺失值/异常值处理 标准化/归一化 统一量纲 常见问题 处理方法 输出结果 采样率不足 通信丢包 传感器故障 删除/填充/插值 3σ/箱线图检测 Min-Max/Z-score 干净数据集 统一尺度 可分析数据 核心原则:先清洗,再分析。数据质量决定分析结果的上限。

嗯,这一章的内容就到这里。数据采集、清洗、标准化,这三步看起来基础,但做好了,后面的分析工作会顺畅很多。我见过太多项目,因为数据预处理没做好,导致整个分析结论都是错的。希望你能重视起来。

专注资料整理