变压器DGA数据集详解:从Excel预处理到故障诊断实战

发布时间:2026/9/1 11:22:02
变压器DGA数据集详解:从Excel预处理到故障诊断实战 简介这份DGA数据集以Excel格式整理了357组变压器油中溶解气体的真实测量样本覆盖7种不同故障类型及正常状态可用于气体分析诊断法DGA下的故障识别与预测研究。数据分为两个工作表Sheet1提供原始数据便于探索性分析Sheet2提供归一化数据适合直接输入机器学习模型进行训练与验证。压缩包共含2000个文件整体约81.36MB除核心Excel数据表外还包含php、js、css、png等网页展示与脚本处理文件方便用户结合工具进行可视化或自动化分析。目前已有396人学习/浏览适合电力系统研究人员、电气工程专业学生以及从事变压器状态维护的工程师使用。借助该数据集可快速复现DGA故障诊断流程对比不同算法效果并为实际运维中的故障预警和状态评估提供数据支撑。 搞变压器故障诊断的人电脑里如果没有一份像样的DGA数据集就跟厨师没有案板一样。DGADissolved Gas Analysis油中溶解气体分析是变压器状态评估最常用、也是最有效的手段之一。这套Excel格式的DGA数据集整理的是典型的变压器油中溶解气体浓度记录配合故障类型标签可以直接用来做三比值法计算、机器学习模型训练、算法精度验证。不管你是做设备运维的工程师、搞数据分析的算法工程师还是电力专业的学生这套数据都能派上用场。1. 项目整体解读DGA数据为什么是变压器诊断的硬通货1.1 先理解变压器为什么要做DGA分析变压器内部一旦出现过热、放电等异常绝缘油和固体绝缘材料就会发生裂解产生氢气、甲烷、乙烷、乙烯、乙炔等特征气体这些气体大部分会溶解在绝缘油里。DGA分析的核心逻辑就是取一管油样提取出溶解气体的组分和浓度反推设备内部的运行状态。这个逻辑之所以成立是因为不同故障类型对应不同的气体产生路径。比如电弧放电会产生大量乙炔局部放电主要产生氢气高温过热则以乙烯和甲烷为主。气体组分就像设备内部留下的“指纹”DGA就是读指纹的技术。更关键的是这套方法不需要停电不需要拆卸设备一台运行中的变压器就能完成状态评估在电力行业的日常运维里几乎是绕不开的步骤。1.2 数据集的价值定位这份Excel格式的DGA数据集本质上是一份带标签的样本集合。每一行记录代表一次油样检测结果包含多种特征气体浓度值和对应的故障类型标签。数据集的用途很直接验证三比值法、罗杰斯比值法等经典诊断规则的准确率作为机器学习分类模型的训练集比如随机森林、XGBoost、SVM做教学演示让学生通过真实数据理解故障诊断的完整链路从实际使用角度看Excel格式是个非常务实的选择。对比CSV或数据库文件Excel允许你在一个文件里放多个工作表、做颜色标注、写备注、插入原始记录截图管理成本和理解成本都低。对于几百条到几千条的中小规模数据Excel的承载能力完全够用。2. 数据集字段解析每一列都不是白给的2.1 气体指标与辅助字段怎么看拿一份典型的DGA数据集来看除了样本编号、设备编号、采样日期这些基础字段外核心的气体字段一般包括H₂氢气、CH₄甲烷、C₂H₆乙烷、C₂H₄乙烯、C₂H₂乙炔、CO一氧化碳、CO₂二氧化碳。还有一类数据会直接给出总烃含量或者标注产气速率。不同气体代表的指向性差异很大。下面这张表整理了常见气体与故障类型的对应关系日常做诊断时可以参考气体组分主要来源典型关联故障H₂低能放电、电晕放电、油裂解局部放电、电弧放电初期CH₄低温过热300℃低温过热、轻微放电C₂H₆中低温过热热性故障早期C₂H₄高温过热500℃高温过热、热点C₂H₂电弧放电、高温裂解高能放电、电弧放电CO / CO₂固体绝缘材料老化纸绝缘过热、老化这里要提醒一句单独看某一个气体的绝对值意义不大。比如乙炔浓度只要超过5μL/L就需要高度警惕但不同电压等级、不同运行年限的变压器气体标准阈值差异很大。所以数据集里如果带有设备电压等级或容量字段处理时千万别丢后面做诊断修正时会用到。2.2 故障类型标签体系与编码约定数据集的故障标签通常是分类编码比如0代表正常1代表低温过热2代表中温过热3代表高温过热4代表局部放电5代表低能放电6代表高能放电。有些数据还会细分出“受潮”或“油流带电”等特殊类型具体要看数据集的整理口径。拿到数据后第一件事就是检查标签分布。我见过不少数据集标签分布严重不均衡高能放电样本占了大半局部放电只有可怜的几个样本。这种情况下直接训练分类模型模型会偏向样本多的类别准确率虚高。建议先做一次类别分布统计如果某个类别样本太少要么考虑过采样要么干脆做二分类故障/正常降级处理。3. 数据预处理实操别拿到Excel就急着建模3.1 加载Excel数据的正确姿势从Excel加载数据这一步看着简单踩坑的人不在少数。用Python处理时最常用的是pandas的read_excel函数。很多人遇到的第一个坑是“明明文件路径没错就是读不出来”大概率是文件后缀和实际格式不匹配。.xls和.xlsx的内部结构不同read_excel需要指定对应的engine.xlsx用openpyxl.xls用xlrd。import pandas as pd # .xlsx文件 df pd.read_excel(dga_dataset.xlsx, sheet_nameSheet1, engineopenpyxl) # .xls文件 df pd.read_excel(dga_dataset.xls, sheet_nameSheet1, enginexlrd)读取之后也别急着往下走先把列名统一。很多手工维护的Excel表里列名带着空格、换行甚至同一列在不同行里格式不一。建议第一步做列名清洗df.columns [col.strip().replace( , _).replace(\n, ) for col in df.columns]还有一个隐患是合并单元格。Excel里的合并单元格在pandas读进来之后只有左上角有值其余全是NaN如果不处理后面算特征值就全是空。读取时设置header0之后最好用df.isnull().sum()检查一下空值分布对有合并单元格的列做前向填充或删除处理。3.2 日期字段、文本拼接与格式转换的坑这份数据集里带采样日期字段处理日期最容易出问题的是Excel的日期序列号。当你用pd.read_excel读取时日期列的值已经是datetime类型这个没问题。但如果你在Excel里手动处理过或者把数据从其他工具导入Excel日期可能变成一串数字比如45000其实是某一天相对于1900年1月0日的序列号。这种时候需要在Excel里设置单元格格式或者在Python里用pd.to_datetime转换建议统一成YYYY-MM-DD格式再导出。还有很多人做数据标注时喜欢在Excel里用公式拼接文本和日期。比如在新增一列时写采样日期为B2结果出来的是采样日期为45000日期变成了序列号。正确做法是用TEXT函数把日期先格式化采样日期为TEXT(B2,yyyy-mm-dd)如果涉及到时分秒格式代码要用到hh:mm:ss完整的写法就是TEXT(B2,yyyy-mm-dd hh:mm:ss)。别小看这个细节我见过有人用这种拼接方式生成了几十行样本编号等到后面做匹配的时候才发现编号全是错的。这类Excel格式问题解决起来不复杂核心是理解Excel内部的数据存储机制日期和时间本质上是数字展示成什么格式是单元格格式决定的。任何涉及日期拼接、条件筛选、透视表的操作先确认底层类型是“日期”还是“文本”否则结果一定会和预期不符。4. 从数据到诊断两种经典方法的实操计算4.1 三比值法IEC 60599手动演算拿到数据之后最基础的分析手段就是三比值法。它的原理是用三组气体比值来编码故障类型编码组合对应具体的故障分类。三个比值分别是比值1C₂H₂ / C₂H₄乙炔/乙烯比值2CH₄ / H₂甲烷/氢气比值3C₂H₄ / C₂H₆乙烯/乙烷每个比值根据区间范围编码为0、1、2三组编码组合成三位码查表得到故障类型。IEC 60599的编码规则大致如下比值范围编码0.10≥0.1且11≥1且31C₂H₄/C₂H₆编码不同按标准查表≥32实际计算时我习惯用Python直接算避免手算出错def three_ratio_code(c2h2, c2h4, ch4, h2, c2h6): r1 c2h2 / c2h4 if c2h4 ! 0 else float(inf) r2 ch4 / h2 if h2 ! 0 else float(inf) r3 c2h4 / c2h6 if c2h6 ! 0 else float(inf) # 按IEC 60599规则编码 code1 0 if r1 0.1 else (1 if r1 1 else 2) code2 0 if r2 0.1 else (1 if r2 1 else 2) code3 0 if r3 1 else (1 if r3 3 else 2) return f{code1}{code2}{code3}举个例子某次检测结果H₂150μL/LCH₄80μL/LC₂H₆20μL/LC₂H₄100μL/LC₂H₂5μL/L。计算得C₂H₂/C₂H₄ 5/100 0.05编码0CH₄/H₂ 80/150 ≈ 0.53编码1C₂H₄/C₂H₆ 100/20 5编码2组合编码“012”查表对应“高温过热”。这个结果和变压器油色谱在线监测的实际告警高度吻合说明数据质量合格。4.2 大卫三角形法的坐标投影三比值法虽然经典但存在边界问题——比值刚好落在临界点附近时编码会跳变。大卫三角形法是对三比值法的一个重要补充它把CH₄、C₂H₄、C₂H₂三种气体的相对百分比投影到三角形坐标里按落点区域判断故障类型。具体做法是计算三种气体的相对占比%CH₄ CH₄ / (CH₄ C₂H₄ C₂H₂) %C₂H₄ C₂H₄ / (CH₄ C₂H₄ C₂H₂) %C₂H₂ C₂H₂ / (CH₄ C₂H₄ C₂H₂)三个百分比加起来恒等于100%所以只需要两个值就能在三角形中定位。判断规则是PD局部放电%CH₄ 98%D1低能放电%C₂H₂ 13%且%C₂H₄ 23%D2高能放电%C₂H₂ 13%且%C₂H₄ ≥ 23%T1低温过热%CH₄ 98%%C₂H₄ 20%T2中温过热%C₂H₄ 在20%~50%之间T3高温过热%C₂H₄ 50%在Excel里用散点图加判断公式就能完成这个分类不需要额外工具。喜欢写代码的话用matplotlib的tripcolor画三角形分布图直观展示每个样本的落区在做数据报告时特别加分。5. 常见问题与排查技巧实录5.1 高频问题速查表数据处理过程中有一些问题是反复出现的。我整理了一份高频问题速查表按出现频率排序供大家参考问题现象可能原因排查/解决方案read_excel报错或返回空表文件是.xlsx但engine指定了xlrd路径含中文显式指定engine路径用英文先os.path.exists检查日期列读取后是数字Excel日期序列号未被识别用pd.to_datetime指定unitDorigin1900-01-01转换气体浓度出现负值脱气过程计算错误或录入失误先做数据清洗负值按异常值处理或删除标签分布失衡故障类型样本采集不均匀统计类别频次考虑过采样/欠采样或降级为二分类Excel外部工具连接报“外部表不是预期的格式”文件是.xlsx但工具按.xls解析首行有合并单元格另存为CSV或规范表格结构去掉合并单元格后再连接气体含量单位不统一部分样本用μL/L部分用ppm统一换算成μL/L1ppm≈1μL/L气体在油中5.2 数据清洗阶段必须做的三件事第一检查气体浓度的逻辑关系。比如CO₂浓度不可能低于CO浓度总烃含量必须大于等于各组分的加总如果出现违反物理规律的记录优先排查是否是单位或录入错误。第二处理零值和缺失值。很多变压器在正常运行状态下乙炔浓度为0是正常的不能直接删除。但如果多个特征同时为0大概率是样本录入不完整这种样本对模型训练没有意义建议剔除。第三划分训练集和测试集时注意按设备维度划分而不是按样本维度随机切分。同一台变压器的多次采样数据之间存在相关性随机切分会造成数据泄漏模型评估结果虚高。这点做机器学习的人容易忽略但对DGA数据来说特别关键因为同一个设备不同时间点的油样气体浓度存在时间序列上的连续性。结尾一点个人心得这份Excel格式的DGA数据集我用过几个场景验证三比值法的准确率、给学生做变压器故障诊断实训、作为XGBoost分类模型的训练数据。整体体验下来最有价值的不是数据本身而是它把“理论诊断规则”和“实际数据”串成了一个闭环。你可以在同一份数据上看到某个样本的三比值编码指向局部放电而大卫三角形法却落在了无故障区域这种矛盾本身就是学习诊断算法的绝佳素材。最后分享一个实操技巧处理DGA数据时建议把原始数据、清洗后数据、诊断结果分别放在Excel的三个工作表里而不是一个表堆到底。这样既方便回溯也方便给别人讲解。下次如果你发现某个样本的诊断结果和实际检修报告对不上回原始表里翻一翻往往能发现是录入时的小错误而不是算法的问题。本文还有配套的精品资源点击获取