☰
变压器DGA数据集解析:从Excel表格到故障诊断模型实践
2026/10/1 1:45:25 网站建设 项目流程

简介:这份资源是一套面向电力系统运维与科研人员的变压器故障诊断分析数据集,采用DGA技术,通过油中溶解气体含量判别设备内部故障类型。压缩包共2000个文件,大小约81.36MB,核心内容为Excel格式的数据表,并包含部分辅助展示与处理文件,方便在常规办公或编程环境中使用。已有396人学习,适合需要真实样本进行建模与验证的读者。数据集内含357组测量样本,覆盖7种故障类型与正常状态,并划分为原始数据和归一化数据两个工作表,可直接用于特征分析、机器学习分类或故障判据研究。样本涉及H2、CH4、C2H6、C2H4、C2H2等关键气体,均为实际运行测量值,有助于理解气体产生机理与故障对应关系。 干变电运维的朋友应该都有过这种经历:设备巡检时发现油中气体异常,马上翻出历史台账,对着几列气体浓度数据反复琢磨,想知道设备到底怎么了。我自己刚接触DGA数据时也一样,手里拿到一份Excel格式的变压器故障诊断分析用数据集,第一反应就是:这些列到底代表什么?怎么从一堆浓度数字里判断出故障类型?数据能不能直接用来训练诊断模型?

这篇文章就围绕“变压器故障诊断分析用DGA数据集(Excel格式)”展开,从数据集结构、诊断原理、Excel工程细节到建模应用,把一份看似普通的表格里面藏着的东西讲透。适合变电运维人员、设备状态检测工程师以及对电力设备故障诊断感兴趣的算法同学参考,尤其是那些拿到DGA数据却不知道从哪下手的读者。

1. DGA数据集到底包含什么:一张表的“骨架”与业务逻辑

1.1 为什么DGA能成为变压器故障诊断的“首选信号”

DGA全称是Dissolved Gas Analysis,即油中溶解气体分析。它的原理不复杂:变压器内部的绝缘油和绝缘纸在电、热作用下会慢慢分解,产生氢气、甲烷、乙烷、乙烯、乙炔等特征气体。不同性质的故障——比如局部放电、过热、电弧放电——分解出的气体种类和比例明显不同。所以,检测油中溶解气体的组成和浓度,就像给变压器做了一次“血液检测”,不用停机拆设备,就能推断出内部可能存在的问题。

这也是DGA在电力行业地位极高的原因。传统的预防性试验往往需要停电,而DGA是带电检测,取样方便、成本低廉、灵敏度高。一台220kV主变,定期取一次油样做色谱分析,就能持续跟踪设备状态。尤其在大规模状态检修推进的今天,DGA几乎是所有变压器状态评价里权重最高的一个手段。

1.2 一份标准DGA数据表应该长什么样

我拿到过的DGA数据集,通常包含以下几类字段:

字段类型典型字段说明
设备信息设备编号、电压等级、型号用于区分不同变压器
采样信息采样日期、运行时长用于趋势分析和产气速率计算
气体浓度H2、CH4、C2H6、C2H4、C2H2、CO、CO2核心特征气体,单位μL/L
衍生参数总烃、绝对产气速率、相对产气速率部分数据集会直接算好
工况信息油温、负载、油品型号辅助诊断,但常被忽略
标签故障类型/诊断结论只有标注过的数据集才有,用于监督学习

这个表结构看着简单,但每一列背后都有讲究。

H2主要和低能放电、局部放电相关,CH4、C2H6、C2H4则是热分解的产物链——温度越低,饱和烃占比越高;温度越高,不饱和烃越多。C2H2是电弧放电的标志性气体,一出现就要高度重视。CO和CO2反映的是固体绝缘(绝缘纸)的老化程度。理解这些对应关系,是后面所有诊断方法的基础。

1.3 为什么是Excel格式而不是数据库

很多人问,DGA数据量又不小,为什么市面上流通的数据集大多是Excel格式?原因很实际:

Excel上手门槛低,运维人员、试验班组的老师傅都会用。数据导出后可以直接做透视表、看趋势图、加条件格式。几十台主变的数据,几百到几千条记录,Excel完全跑得动,没必要上数据库。更关键的是,很多变电站的油色谱在线监测系统或试验报告系统,导出的默认格式就是Excel。所以用Excel作为数据集的载体,是工程现场自然选择的结果。

2. 从气体浓度到故障结论:核心诊断逻辑与数据集的对应关系

2.1 特征气体与故障类型的对应关系表

我梳理过一份DGA常用特征气体对应表,这块内容虽然基础,但每次用都有新体会:

故障类型主导特征气体次要气体典型场景
局部放电H2为主,CH4少量C2H2几乎为零绝缘气隙放电、电晕
低温过热(<300℃)CH4、C2H6CO、CO2过负荷、油道堵塞
中温过热(300-700℃)CH4、C2H4C2H6铁心多点接地、接触不良
高温过热(>700℃)C2H4、CH4显著H2、C2H6分接开关接触不良、导体过热
电弧放电C2H2、H2很高CH4、C2H4绕组击穿、闪络

注意一个关键点:实际故障很少是单一气体“独唱”,大多是几种气体按不同比例“合唱”。这是因为油裂解是一个热力学过程,不同温度区间对应不同的断键反应路径。温度越高,分子断键越彻底,产出的不饱和烃就越多。记住这条链条——温度决定了产物分布,产物分布反推故障性质,这才是DGA诊断的核心逻辑。

2.2 IEC三比值、罗杰斯比值与大卫三角形

知道了特征气体还不够,工业界更常用的是比值法。最经典的是IEC三比值法,取三组比值:C2H2/C2H4、CH4/H2、C2H4/C2H6,按编码规则映射到故障类型。

举一个我实际算过的例子:某110kV主变油样检测出C2H2=8μL/L、C2H4=35μL/L、CH4=30μL/L、H2=60μL/L、C2H6=25μL/L。算出三组比值:C2H2/C2H4=0.23,对应编码1;CH4/H2=0.5,对应编码0;C2H4/C2H6=1.4,对应编码0。查找编码组合“100”,对应的是电弧放电。后来停电检查,确认是分接开关触头烧蚀,与诊断结论一致。

罗杰斯比值法和大卫三角形法原理类似,只是编码区间和分类粒度略有差异。它们最大的价值是把“多组分浓度”降维成“比值组合”,再用编码查表,工程上简单高效。但对于比值落在编码盲区、或者多故障并存的情况,规则方法容易误判。这也是后面说的“为什么还要上机器学习”的原因。

2.3 数据集如何支撑上面的诊断方法

从数据集到诊断结论,流程其实就三步:先读浓度,再算比值,最后对照编码表输出故障类型。对无监督场景,把编码规则写成Excel公式,就能在表格里直接标注出每一条记录对应的故障类型。对有监督的训练场景,数据集里那个“故障类型”列,就是模型要学习的标签。

你可以把DGA数据集理解成两份资源:一份是带标签的历史样本,用于训练诊断模型;另一份是未标注的现场记录,用于验证模型泛化能力。Excel格式恰好让这两类数据能在一个文件里共存,用筛选功能就能快速区分。

3. Excel工程实践:格式兼容、读取报错与日期拼接的坑

3.1 脏数据才是最普遍的“隐形杀手”

我拿到手的大多数DGA数据集,第一件事不是建模,而是清洗。常见的脏数据形态有这么几类:

  • 缺失值:有些样本只有6组分,缺CO2或C2H6。
  • 零值:低于检测限的气体被记录为0或空,这其实是“未检出”,不是真的没有。
  • 单位不统一:有的表格用μL/L,有的用ppm,虽然数值上1ppm≈1μL/L,但混着用容易看错量级。
  • 异常大值:个别浓度高得离谱,往往是录入或标定错误。

我的处理原则是:缺失值先查原始记录,查不到就剔除,不盲目填充;零值统一标注为“<检出限”或保留为0,但要单独作为一类处理;单位统一换算后再进模型;异常值先判断是真实故障还是录入错误,避免把极端工况误删。

这里提醒一句:DGA数据里的“注意值”(比如H2>150μL/L、C2H2>5μL/L)只是提示你需要关注,不等于故障。真正要结合产气速率和趋势来看——单次浓度高可能是取样误差,持续上升才是真问题。

3.2 “外部表不是预期的格式”到底是怎么回事

不少用ArcGIS或其他外部工具去连Excel文件的人,都遇到过这个报错:“连接到数据库失败。常规功能故障外部表不是预期的格式”。我第一次遇到时也懵,后来排查下来,问题出在文件格式和扩展名不匹配。

最常见的情况是:文件实际上是CSV或文本格式,但被改成了.xlsx后缀;或者文件是从某个监测系统导出的,内部结构不是标准的Excel表格。外部工具读取时按标准Excel格式解析,自然就失败了。解决办法很简单:用Excel打开这个文件,如果提示“文件格式和扩展名不匹配”,说明这就是个“伪Excel”。把文件另存为真正的.xlsx格式,再重新连接,问题基本就解决了。

还有一个坑是xls和xlsx的兼容问题。老版本的xls是二进制格式,新环境里的工具链往往只支持xlsx。用pandas读xls文件时,需要安装xlrd且版本不能太高;读xlsx则需要openpyxl。代码层面最常见的报错就是Engine缺失:

import pandas as pd # xlsx文件需要openpyxl引擎 df = pd.read_excel("dga_dataset.xlsx", sheet_name="Sheet1", engine="openpyxl") # 老式xls文件需要xlrd引擎 df = pd.read_excel("dga_data_2019.xls", engine="xlrd")

第一次跑通后,建议用df.info()和df.head()检查一下列名和数据类型,尤其是气体浓度列是不是被读成了字符串,这是在工程里最容易踩的隐性问题。

3.3 Excel中用“&”连接文本与日期的正确处理姿势

清洗数据时经常要生成类似“2024-03-15检修前采样”这样的描述性字段,很多人会直接写=A2&"采样",结果日期变成了45000多这样一串数字。原因很简单:Excel里日期的本质是序列数,直接拼接会显示底层数值。

正确做法是用TEXT函数把日期格式化成字符串,再拼接:

=TEXT(A2,"yyyy-mm-dd")&" 检修前采样"

如果数据要精确到秒,格式代码可以写成这样:

=TEXT(A2,"yyyy-mm-dd hh:mm:ss")&" 采样记录"

这个小细节在做DGA数据整理时特别实用。因为现场采样经常一天多台设备、多个油样,生成带时间戳的记录字段,后续做趋势分析、时间序列建模时能省去大量手工排序的工作。

4. 把Excel数据集变成能用的诊断模型:特征工程与建模落地

4.1 为什么有了IEC三比值还要训练模型

有人可能会问:既然IEC三比值法已经写成标准了,为什么还要训练模型?这个问题的答案,用过三比值编码的人都会心一笑。

三比值法有个天然短板:编码区间固定,覆盖不了所有实际工况。当比值落在编码表之外的组合时,就会得到“无对应故障”或“编码000”的尴尬结论。而且实际故障往往是复合型的——先过热,后发展成放电——这类叠加工况,单一编码表很难准确描述。

机器学习模型就不一样。随机森林、GBDT这类模型可以从历史样本里学到特征与故障类型之间的非线性边界,处理复杂工况时比规则法更占优势。我自己在几百条DGA样本上跑过随机森林,效果稳定,关键特征集中在H2、C2H2、C2H4以及三组比值上,和领域知识高度吻合。

4.2 特征构造:千万别只喂原始浓度

DGA数据建模最大的误区,是直接拿7种气体浓度当特征丢进模型。这样做会带来两个问题:一是不同容量、不同电压等级的变压器,气体浓度量级差异巨大,模型容易学到设备容量特征而不是故障特征;二是浓度绝对值受工况影响大,比值的稳定性比绝对值更好。

我常用的做法是同时构造两类特征:原始浓度直接标准化,再额外生成三组比值和总烃、产气速率等衍生特征。特征构造代码不复杂:

import pandas as pd df = pd.read_excel("dga_dataset.xlsx", engine="openpyxl") # 构造比值特征 df["ratio_1"] = df["C2H2"] / (df["C2H4"] + 1e-6) # 避免除零 df["ratio_2"] = df["CH4"] / (df["H2"] + 1e-6) df["ratio_3"] = df["C2H4"] / (df["C2H6"] + 1e-6) # 总烃 df["total_hydrocarbon"] = df[["CH4", "C2H6", "C2H4", "C2H2"]].sum(axis=1)

这里给分母加一个极小值,是为了避免H2或C2H6为0时出现除零错误。很多人在这个细节上踩坑,模型训练直接报错,还要回头排查半天。

样本不平衡也是DGA数据的常态。故障样本尤其是放电类故障,占比往往不到5%。这种情况下直接用准确率评估没有意义——全部预测为“正常”就能拿到95%准确率。要么用SMOTE做过采样,要么在模型评估里以F1分数和混淆矩阵为准。

还有一个容易忽略的问题:切分训练集和测试集时,务必按时间顺序切,不要随机切分。变压器状态是时序演进的,随机切分会导致同一台设备不同时期的数据同时出现在训练集和测试集里,相当于“用未来预测过去”,评估结果虚高得厉害。

4.3 从模型到现场:两级诊断结构更稳

模型训练出来不等于能直接上岗。我实际部署时倾向采用“规则预筛+模型兜底”的两级结构:先用IEC三比值等规则方法做初步筛选,把能明确判别的故障直接锁定;对于比值盲区、边界模糊的样本,再交给模型判断。这样既保留了规则方法的可解释性,又用模型补上了规则覆盖不全的空白,现场运维人员也更容易接受。

另外,模型输出的故障类型标签,要尽量和数据集原表的标签体系保持一致,方便和现场试验报告比对验证。不要自己造一套新分类体系,否则历史数据接不上,模型上线后做一致性校验时会非常痛苦。

5. 常见问题速查与现场实操经验

5.1 DGA数据集使用典型问题速查表

问题产生原因解决办法
读Excel报“外部表不是预期的格式”扩展名与真实格式不符用Excel另存为标准xlsx再读取
pandas读xls报错xlrd版本过高或未安装安装xlrd==1.2.0兼容老xls
日期列读出来是整形数Excel日期本质是序列数读取时parse_dates或TEXT格式化
气体浓度出现大量0值低于检测限记为0统一标记为“<检出限”,单独处理
三比值编码结果为000比值落在编码盲区结合产气速率趋势或交模型判断
同一设备浓度波动大取样、工况或检测误差看趋势和产气速率,不看单点

5.2 我踩过的几个坑

第一,单位不统一导致的误判。我收到过一份数据,前面的记录用μL/L,后面几行被改成mL/m³,两个单位数值一致,但量纲不同,稍不注意就会在特征工程里代入错误数值。所以拿到数据的第一步,永远是先看单位说明,最好让数据提供方在表头里写清楚。

第二,用原始浓度做距离度量。早期做聚类分析时,直接把7种气体浓度标准化后算欧氏距离,结果聚类结果完全被C2H2这种浓度波动大的气体主导。后来改成用比值特征和总烃组合,结果才合理。

第三,轻信“标签”。有些数据集里的故障类型是运行人员根据经验填的,没有经过停电检修验证。这类标签本身就是有噪的。训练集里这种情况多了,模型学到的不是真实故障规律,而是标签噪声。所以能拿到经过实验室色谱分析、并经检修验证的诊断结论做标签,才比较可靠。

第四,忽略产气速率。只看单次浓度容易误判。同一个气体浓度,一个月升上去的和一年升上去的,严重程度完全不同。数据表里如果有历史日期,一定要算一下绝对产气速率——国标推荐的一个简单算法是两次采样浓度差除以时间间隔,单位用mL/d或μL/L·d。

5.3 数据交接的一个习惯建议

最后分享一个个人经验。DGA数据集在运维、试验、检修、算法几个角色之间流转时,最怕的就是“裸数据”。我强烈建议在Excel文件里额外加一个“数据字典”工作表,写清楚每个字段的含义、单位、取值说明和标签含义。这样即使半年后换人接手,也能快速读懂数据。这个习惯帮我在多个项目里省掉了大量的沟通成本,比任何技术方案都实在。

在我自己看来,Excel格式的DGA数据集就像是故障诊断现场和算法模型之间的一座桥。它的格式并不“前沿”,却恰恰是现场工程师每天都在用、都看得懂的东西。用好这份数据,比盲目追求复杂的模型更实用。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询