3. 原始数据格式解析
在MBP建模平台中,测量数据预处理的第一步是正确解析原始数据文件。不同测量设备与软件输出的数据格式各异,理解其结构、字段含义及单位标注是后续清洗与建模的基础。本节将系统解析三种最常见的测量数据格式:CSV、TXT 与 HDF5。
3.1 CSV 格式解析
CSV(Comma-Separated Values)是最通用的测量数据交换格式,几乎所有的数据采集系统都支持导出为 CSV。其核心特征为:纯文本、逗号分隔、首行通常为字段名。
3.1.1 典型 CSV 结构示例
Timestamp,Channel_1,Channel_2,Channel_3,Status
2025-03-01 08:00:00.123,25.432,101.234,0.876,OK
2025-03-01 08:00:00.223,25.431,101.236,0.877,OK
2025-03-01 08:00:00.323,25.430,101.238,0.875,WARN
2025-03-01 08:00:00.423,25.429,101.240,0.874,OK
3.1.2 字段含义与单位标注规范
| 字段名 | 含义 | 数据类型 | 单位标注方式 |
|---|---|---|---|
| Timestamp | 采样时间戳 | datetime | ISO 8601 格式,隐含单位 s |
| Channel_1 | 第一通道测量值 | float | 字段名后缀或单独 units 行 |
| Channel_2 | 第二通道测量值 | float | 字段名后缀或单独 units 行 |
| Channel_3 | 第三通道测量值 | float | 字段名后缀或单独 units 行 |
| Status | 设备状态标识 | string | 枚举值(OK/WARN/ERR) |
单位标注最佳实践:推荐在 CSV 首行字段名中直接嵌入单位,例如
Temperature(°C)、Pressure(kPa)、Flow_Rate(m3/h)。若字段名不含单位,则应在文件头部增加一行 # units: °C, kPa, m3/h 作为元数据注释。
3.2 TXT 格式解析
TXT 格式在工业测量领域广泛使用,尤其是老旧设备或定制化采集系统。其分隔符不固定,常见的有空格、制表符(Tab)、竖线(|)等。解析 TXT 文件的关键在于正确识别分隔符与跳过注释行。
3.2.1 典型 TXT 结构示例(空格分隔)
# Measurement Data from Device X-200
# Date: 2025-03-01
# Columns: Time(s) Temp(C) Press(bar) Flow(L/min)
0.000 25.432 1.012 0.876
0.100 25.431 1.014 0.877
0.200 25.430 1.013 0.875
0.300 25.429 1.015 0.874
3.2.2 TXT 解析注意事项
- 注释行处理:以
#、%、//开头的行应自动跳过,但需提取元数据信息。 - 分隔符检测:建议使用自动检测算法(如 Python 的
csv.Sniffer)识别空格、Tab 或自定义分隔符。 - 缺失值标识:常见缺失值标记包括
NaN、NA、-9999、***,需在解析时统一处理。 - 多行表头:部分 TXT 文件包含多行注释或表头,需指定跳过行数(skiprows)。
解析策略:对于 TXT 格式,MBP 建模平台推荐采用“先探测后解析”策略——先读取前 20 行探测分隔符、注释符、列数及数据类型,再执行全量解析。此方法可兼容 90% 以上的工业 TXT 测量文件。
3.3 HDF5 格式解析
HDF5(Hierarchical Data Format version 5)是一种用于存储大规模科学数据的二进制文件格式,在气象、地震、航空航天等高频测量领域广泛使用。其核心优势在于支持多维数组、数据集分组、元数据内嵌及高效 I/O。
3.3.1 HDF5 关键概念
| 概念 | 说明 | 测量数据中的应用 |
|---|---|---|
| Group(组) | 类似文件系统中的目录,用于组织数据 | 按测量批次、设备编号、时间范围分组 |
| Dataset(数据集) | 存储多维数组的核心对象 | 存储时间序列、频谱矩阵、图像序列 |
| Attribute(属性) | 附加在 Group 或 Dataset 上的元数据 | 存储单位、采样率、量程、设备ID |
| Datatype(数据类型) | 定义数据存储的精度与格式 | float32、float64、int32、复合类型 |
3.3.2 HDF5 字段含义与单位标注
在 HDF5 中,单位标注通过 Attribute 机制实现,这是其相比 CSV/TXT 的核心优势。每个 Dataset 可以携带多个 Attribute,明确记录物理量、单位、量程、采集时间等元信息。
# HDF5 中单位标注的 Python 示例(h5py 库)
import h5py
import numpy as np
# 创建 HDF5 文件并写入测量数据
with h5py.File('measurement.h5', 'w') as f:
# 创建组
meas_grp = f.create_group('/measurements')
# 创建数据集
data = np.array([25.432, 25.431, 25.430], dtype=np.float32)
ds = meas_grp.create_dataset('temperature', data=data)
# 添加单位属性
ds.attrs['unit'] = '°C'
ds.attrs['description'] = 'Chamber temperature'
ds.attrs['sensor_id'] = 'T-1001'
ds.attrs['range_min'] = -40.0
ds.attrs['range_max'] = 150.0
注意:解析 HDF5 文件时,务必读取所有 Attribute 信息。许多建模错误源于忽略单位属性,导致量纲不匹配。MBP 建模平台在导入 HDF5 时会自动提取 Attribute 并映射到内部字段元数据表。
3.4 三种格式对比与选型建议
| 对比维度 | CSV | TXT | HDF5 |
|---|---|---|---|
| 可读性 | 高(文本可读) | 中(依赖分隔符) | 低(二进制) |
| 存储效率 | 低(冗余逗号) | 低(空格填充) | 高(压缩+分块) |
| 元数据支持 | 弱(需额外注释) | 弱(注释行) | 强(Attribute 机制) |
| 多维数据 | 不支持(需展平) | 不支持(需展平) | 原生支持 |
| 解析速度 | 快(小文件) | 快(小文件) | 快(大文件优势明显) |
| 适用场景 | 小规模、通用交换 | 老旧设备、定制格式 | 大规模、高频、复杂结构 |
选型建议:对于小于 100MB 的测量数据,优先使用 CSV 格式以方便人工核查;对于 GB 级高频测量数据(如 10kHz 以上采样率),强烈建议使用 HDF5 格式。MBP 建模平台内置格式自动检测与转换工具,可在导入时统一转为内部 HDF5 存储。
3.5 字段含义与单位标注的标准化流程
无论原始数据格式如何,MBP 建模平台在解析后都会执行统一的字段标准化流程,确保后续预处理步骤使用一致的字段命名与单位体系。
- 字段名规范化:统一转为小写、下划线命名,去除特殊字符。
- 单位提取与转换:从字段名、注释行、Attribute 中提取单位,必要时进行单位转换(如 psi → kPa)。
- 数据类型推断:根据数据内容自动推断 float/int/string/datetime 类型。
- 缺失值标记统一:将所有缺失值标记统一为
NaN(浮点)或None(其他类型)。 - 元数据注册:将字段名、单位、数据类型、量程、描述等信息写入内部元数据表。
通过上述标准化流程,无论原始数据是 CSV、TXT 还是 HDF5,MBP 建模平台都能将其转换为统一的内部表示,为后续的缺失值处理、异常值检测、特征工程等预处理步骤奠定坚实基础。