3. 原始数据格式解析

在MBP建模平台中,测量数据预处理的第一步是正确解析原始数据文件。不同测量设备与软件输出的数据格式各异,理解其结构、字段含义及单位标注是后续清洗与建模的基础。本节将系统解析三种最常见的测量数据格式:CSV、TXT 与 HDF5。

常见测量数据格式解析流程 常见测量数据格式解析流程 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。

HDF5 文件层级结构 HDF5 文件层级结构示例 / (根组) /metadata /measurements /calibration device_info sampling_rate channel_1 channel_2 channel_3 数据集(Dataset)存储实际测量数组,属性(Attribute)存储单位、量程等元数据 HDF5 支持分块存储与压缩,适合 GB 级高频测量数据

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 建模平台在解析后都会执行统一的字段标准化流程,确保后续预处理步骤使用一致的字段命名与单位体系。

  1. 字段名规范化:统一转为小写、下划线命名,去除特殊字符。
  2. 单位提取与转换:从字段名、注释行、Attribute 中提取单位,必要时进行单位转换(如 psi → kPa)。
  3. 数据类型推断:根据数据内容自动推断 float/int/string/datetime 类型。
  4. 缺失值标记统一:将所有缺失值标记统一为 NaN(浮点)或 None(其他类型)。
  5. 元数据注册:将字段名、单位、数据类型、量程、描述等信息写入内部元数据表。
字段标准化流程 字段标准化五步流程 字段名规范化 lower_case 单位提取转换 psi→kPa 数据类型推断 float/int/str 缺失值统一 → NaN 元数据注册 内部元数据表

通过上述标准化流程,无论原始数据是 CSV、TXT 还是 HDF5,MBP 建模平台都能将其转换为统一的内部表示,为后续的缺失值处理、异常值检测、特征工程等预处理步骤奠定坚实基础。