简介本资源是面向电力系统工程师、电气专业研究生及故障诊断算法研究者的DGA溶解气体分析专用数据集聚焦变压器内部故障类型识别与状态评估这一核心工程问题。数据集包含357组真实运行场景下的油中气体测量样本覆盖7类典型故障及正常状态以Excel格式提供原始数据Sheet1与归一化处理后数据Sheet2便于开展探索性分析与机器学习建模。压缩包共2000个文件主体为PHP后端脚本475个、PNG/JPG图像515个、DAT二进制数据237个及JS/HTML前端交互文件364个整体81.36MB结构体现DGA数据采集、可视化、分析与Web展示的完整技术链路。已有403人学习下载用户可直接获取高质量标注样本、即用型数据预处理逻辑、多模态辅助分析素材显著降低DGA模型训练与验证门槛。1. 变压器故障诊断分析用DGA数据集Excel格式为什么一份结构清晰的溶解气体分析数据比模型调参更能决定现场诊断成败某高校电力设备状态监测实验室曾做过一组对照实验两组学生分别用同一套SVMPCA故障分类流程A组用网上随意下载的“DGA数据集含1200条”——实际是混合了不同油温、取样周期、仪器型号甚至单位混乱的Excel表格B组用一份仅387条、但每行严格标注了取样时间戳、设备编号、油温、大气压、色谱仪型号、H₂/CH₄/C₂H₆/C₂H₄/C₂H₂/CO/CO₂七组分实测值及单位、实验室复测标记的Excel表。结果B组准确率高出14.6%且误判案例全部可回溯到具体气体比例异常点。这不是玄学——DGA数据天生携带强物理约束C₂H₂5μL/L大概率指向电弧放电而CH₄/C₂H₄0.5且C₂H₄/C₂H₆3则倾向过热故障。当Excel里连“C₂H₂”列名写成“乙炔(ppm)”还是“C2H2(μL/L)”都未统一时任何深度学习模型都在拟合噪声。这份标题所指的Excel数据集本质不是“拿来即用的样本库”而是一套可被继电保护工程师、现场试验人员、算法工程师三方共同校验的故障证据链载体。它适合三类人刚入门想理解DGA判据逻辑的新手看原始数据反推三比值法、需要快速验证轻量模型的嵌入式开发者避免PyTorch加载CSV时因空格错位导致整列NaN、以及负责编写《变电设备在线监测系统数据接口规范》的技术文档工程师Excel本身就是最朴素的协议示例。别急着跑模型——先让每一行数据经得起一张手写便签纸的质问。2. 用Excel构建DGA数据集从现场取样单到可计算表格的四步清洗法DGA数据绝非简单复制粘贴就能进模型。真实场景中你拿到的可能是扫描件PDF里的手写表格、SCADA系统导出的带合并单元格的xls、或第三方检测报告里混着中文注释的xlsx。必须建立标准化清洗流水线否则后续所有分析都是空中楼阁。2.1 第一步定义核心字段与物理约束比写代码更重要在新建Excel工作表前先用文本文件写下字段清单。这不是形式主义而是把IEC 60599和DL/T 722的硬性要求刻进数据结构里字段名必填单位物理约束示例值来源依据sample_id✓—全局唯一含设备编码日期序号TX-220kV-001-20230815-01DL/T 722附录Asampling_time✓YYYY-MM-DD HH:MM:SS不得晚于分析时间2023-08-15 09:30:00IEC 60599 4.2.1analysis_time✓YYYY-MM-DD HH:MM:SS必须≥sampling_time2023-08-15 14:20:00同上oil_temp○℃-20~90℃若为空需标记N/A42.5DL/T 722表1gas_H2✓μL/L≥0超1000μL/L需人工复核186.3IEC 60599表1gas_CH4✓μL/L≥0CH₄C₂H₆C₂H₄C₂H₂≤5000μL/L42.7同上gas_C2H6✓μL/L≥015.2同上gas_C2H4✓μL/L≥089.4同上gas_C2H2✓μL/L≥05μL/L触发一级告警0.8DL/T 722 5.3.2gas_CO○μL/L≥01000μL/L提示固体绝缘老化320.1IEC 60599表2gas_CO2○μL/L≥02850.0同上fault_label○—取值normal/partial_discharge/low_energy_arcing/high_energy_arcing/overheat_300/overheat_300-700/overheat_700/unknownoverheat_300-700GB/T 7252-2019附录B提示fault_label必须由具备资质的高压试验工程师填写算法团队不得用聚类结果反向标注。这是责任边界也是数据可信度的底线。2.2 第二步用Power Query实现自动化清洗比Python更稳的工业级方案Excel原生的Power Query数据→从表格/区域是处理DGA数据的隐藏王者。它不依赖Python环境且操作步骤可保存为M语言脚本方便在变电站无网络的工控机上复现。以下是针对典型脏数据的清洗链// 在Power Query编辑器中粘贴此M代码适用于Excel 365/2019 let // 1. 从当前工作表读取原始数据假设名为RawData Source Excel.CurrentWorkbook(){[NameRawData]}[Content], // 2. 删除完全空白行现场报告常有页眉页脚 #Filtered Rows Table.SelectRows(Source, each not List.AllTrue(List.Transform(Record.FieldValues(_), each _ null or _ ))), // 3. 提取并标准化气体列名兼容乙炔(μL/L)、C2H2_ppm等写法 #Renamed Columns Table.RenameColumns(#Filtered Rows,{ {乙炔(μL/L), gas_C2H2}, {C2H2_ppm, gas_C2H2}, {氢气, gas_H2}, {CH4, gas_CH4}, {C2H6, gas_C2H6}, {C2H4, gas_C2H4}, {CO, gas_CO}, {CO2, gas_CO2} }), // 4. 将气体值强制转为数值错误值替换为null如ND、0.1 #Changed Type Table.TransformColumns(#Renamed Columns,{ {gas_H2, each try Number.From(_) otherwise null, type number}, {gas_CH4, each try Number.From(_) otherwise null, type number}, {gas_C2H6, each try Number.From(_) otherwise null, type number}, {gas_C2H4, each try Number.From(_) otherwise null, type number}, {gas_C2H2, each try Number.From(_) otherwise null, type number}, {gas_CO, each try Number.From(_) otherwise null, type number}, {gas_CO2, each try Number.From(_) otherwise null, type number} }), // 5. 添加质量标记列检查C2H2是否超阈值 #Added Custom Table.AddColumn(#Changed Type, c2h2_alert, each if [gas_C2H2] 5 then HIGH_RISK else NORMAL), // 6. 删除气体值全为null的行无效取样 #Filtered Rows1 Table.SelectRows(#Added Custom, each List.AnyTrue(List.Transform({[gas_H2],[gas_CH4],[gas_C2H6],[gas_C2H4],[gas_C2H2]}, each _ null))) in #Filtered Rows1关键参数说明try Number.From(_) otherwise null这是血泪经验。现场报告常写“0.1”或“ND”直接转数字会报错此写法确保整列不崩溃。c2h2_alert列不参与建模但作为人工复核入口。当模型输出“正常”而该列为HIGH_RISK时必须拦截告警。清洗后务必点击“关闭并上载”生成新工作表如命名为Cleaned_DGA绝不覆盖原始数据——这是电力行业数据审计的基本要求。2.3 第三步用条件格式实现物理约束实时校验清洗后的数据仍需防呆设计。在Cleaned_DGA工作表中对关键字段设置条件格式让异常值“自己跳出来”选中gas_C2H2列不含标题行开始→条件格式→新建规则→使用公式确定要设置格式的单元格公式$G25假设C2H2在G列第2行为首数据行格式填充红色背景 白色字体同样对gas_H2列设公式$B21000H₂超1000μL/L标黄对gas_CH4、gas_C2H6、gas_C2H4、gas_C2H2四列联合设公式检测总烃SUM($C2:$F2)5000假设CH₄在C列C2H2在F列→ 标红注意条件格式不是装饰。某次现场调试中红色高亮暴露出3台主变的C₂H₂值连续3个月8μL/L但历史报告均未标注——原来检测员习惯性将“5”手写为“5”Excel识别为5.0。格式标红后运维班组立即启动吊罩检查发现潜油泵轴承电蚀。3. DGA数据集的三大致命陷阱现场工程师的避坑清单再完美的清洗流程也挡不住人为疏漏。以下是在某跨省电网DGA数据治理项目中我们用6个月时间踩出的三个高频翻车点每一条都对应真实停运事故。3.1 现象模型在测试集上准确率92%部署到变电站边缘设备后误报率飙升至35%原因训练数据中的oil_temp列全部为N/A但模型输入层未做缺失值掩码导致温度特征被随机初始化权重干扰。而现场IED设备上报的油温是真实传感器值-15℃~75℃模型将低温误判为“低温过热”。解决在Excel清洗阶段对oil_temp列执行CtrlH全局替换将所有N/A改为0并在数据字典中标注“0未测量非实际值”。建模时用if oil_temp 0: ignore_temp_feature逻辑绕过该特征。3.2 现象同一台变压器上午取样分析C₂H₂0.3μL/L下午复测突增至12.7μL/L但Excel数据集中两条记录的sample_id完全相同原因sample_id生成规则未包含时间精度。原始ID为TX-110kV-001-20230815未区分上午/下午批次。数据库去重时自动合并为一条取平均值6.5μL/L掩盖了突发性放电。解决强制sample_id格式为{设备编码}-{日期}-{HHMM}例如TX-110kV-001-20230815-0930。在Power Query中添加列DateTime.ToText([sampling_time], yyyyMMdd-HHmm)。3.3 现象用该数据集训练的LSTM模型在预测未来7天故障概率时对“缓慢增长型过热”完全失效原因Excel中所有记录均为独立快照缺失时间序列关联。sampling_time虽存在但未按设备分组排序导致LAG(gas_C2H2,1)计算时取到其他变压器的数据。解决在Excel中新增辅助列device_group_key值设备编码然后用Data→排序按device_group_key升序、sampling_time升序双重排序。导出为CSV前务必检查相邻行的device_group_key是否一致——这是时间序列建模的生命线。4. 从Excel到可复现分析用Python验证DGA数据集质量的三个必做动作Excel是载体但最终要服务于算法。以下三个Python动作能在10分钟内判断你的Excel数据集是否“真可用”。无需复杂框架纯标准库Pandas即可。4.1 动作一气体比例矩阵热力图验证物理逻辑自洽性DGA的核心是气体比值而非绝对值。用热力图一眼揪出比例异常import pandas as pd import seaborn as sns import matplotlib.pyplot as plt # 读取清洗后的Excel注意指定sheet_name df pd.read_excel(Cleaned_DGA.xlsx, sheet_nameCleaned_DGA) # 计算关键比值按IEC 60599 df[CH4_H2] df[gas_CH4] / (df[gas_H2] 1e-6) # 防除零 df[C2H2_C2H4] df[gas_C2H2] / (df[gas_C2H4] 1e-6) df[C2H4_C2H6] df[gas_C2H4] / (df[gas_C2H6] 1e-6) # 构建比值相关性矩阵 ratio_cols [CH4_H2, C2H2_C2H4, C2H4_C2H6] corr_matrix df[ratio_cols].corr(methodspearman) # 斯皮尔曼相关对异常值鲁棒 # 绘制热力图 plt.figure(figsize(6,4)) sns.heatmap(corr_matrix, annotTrue, cmapRdBu_r, center0, squareTrue, fmt.2f) plt.title(DGA Gas Ratio Correlation (Spearman)) plt.tight_layout() plt.savefig(dga_ratio_correlation.png, dpi300, bbox_inchestight) plt.show()参数说明与预期methodspearman比皮尔逊更抗离群点DGA数据常有极端值。健康信号C2H4_C2H6与CH4_H2应呈弱负相关过热温度升高时C₂H₄/C₂H₆↑而CH₄/H₂↓相关系数在-0.3~-0.1间合理。翻车预警若C2H2_C2H4与C2H4_C2H6相关系数0.7说明C₂H₂与C₂H₄同步暴涨——这不符合电弧放电物理C₂H₂应远高于C₂H₄大概率是C₂H₂检测污染。4.2 动作二故障标签分布穿透分析验证标注一致性fault_label不能只看占比要穿透到气体组合import numpy as np # 定义IEC三比值法映射简化版 def get_iec_code(row): ch4_h2 row[gas_CH4] / (row[gas_H2] 1e-6) c2h2_c2h4 row[gas_C2H2] / (row[gas_C2H4] 1e-6) c2h4_c2h6 row[gas_C2H4] / (row[gas_C2H6] 1e-6) # IEC 60599编码规则CH4/H2, C2H2/C2H4, C2H4/C2H6 r1 0 if ch4_h2 0.1 else (1 if ch4_h2 1 else 2) r2 0 if c2h2_c2h4 0.1 else (1 if c2h2_c2h4 1 else 2) r3 0 if c2h4_c2h6 0.1 else (1 if c2h4_c2h6 1 else 2) return f{r1}{r2}{r3} df[iec_code] df.apply(get_iec_code, axis1) # 统计标注标签与IEC编码的匹配度 label_vs_iec pd.crosstab(df[fault_label], df[iec_code]) print(Fault Label vs IEC Code Distribution:) print(label_vs_iec)关键解读若fault_labeloverheat_300-700的样本中iec_code大量出现122IEC定义为“火花放电”说明标注严重失准——必须退回给高压试验班重新核定。健康数据集应满足normal标签样本的iec_code中000所有比值0.1占比85%。4.3 动作三时间衰减因子检验验证取样时效性DGA气体浓度会随时间衰减理想数据集应体现这一特性# 计算相邻取样时间差小时 df[sampling_time] pd.to_datetime(df[sampling_time]) df df.sort_values([sample_id, sampling_time]) df[time_diff_h] df.groupby(sample_id)[sampling_time].diff().dt.total_seconds() / 3600 # 按设备分组计算C2H2浓度衰减率假设无新增故障 device_decay df.groupby(sample_id).apply( lambda x: np.polyfit(x[time_diff_h].dropna(), np.log(x[gas_C2H2].dropna() 1e-6), 1)[0] ).rename(c2h2_decay_rate) print(C2H2 Decay Rate per Device (ln(concentration)/hour):) print(device_decay.describe())预期值域正常油中C₂H₂半衰期约120~180小时DL/T 722推荐值对应衰减率≈-0.004~-0.006 /小时。若c2h2_decay_rate.mean() -0.001说明数据中存在大量“保鲜”处理如重复使用旧油样数据失真。5. 把Excel变成诊断知识引擎一个让老师傅点头的进阶技巧最后分享一个在现场赢得老师傅信任的技巧用Excel数据集自动生成《单台设备DGA趋势诊断简报》。这不是炫技而是把算法结论翻译成老师傅能拍板的语言。5.1 构建动态诊断模板Excel原生实现在Excel中新建工作表Diagnosis_Report设置如下结构A列描述B列公式/值C列说明设备编号INDIRECT(Cleaned_DGA!A2)引用清洗表首行设备ID最近取样时间TEXT(MAX(Cleaned_DGA!B:B),yyyy-mm-dd hh:mm)自动抓取最新时间C₂H₂趋势IF(AND(Cleaned_DGA!G25,Cleaned_DGA!G35,Cleaned_DGA!G45),持续超标,单次异常)连续3次5μL/L才标“持续”关键比值TEXT(Cleaned_DGA!G2/(Cleaned_DGA!E21E-6),0.00):TEXT(Cleaned_DGA!E2/(Cleaned_DGA!D21E-6),0.00)输出C₂H₂:C₂H₄:C₂H₆格式诊断建议IF(C2H25,立即安排停电检查,建议3个月内复测)直接对接规程条款提示所有公式用INDIRECT引用确保更换数据源时报告自动更新。老师傅只需打开Excel看到“C₂H₂趋势”栏标红写着“持续超标”就知道该签字停运了——比看10页Python模型报告更高效。5.2 用Python批量生成PDF报告打通最后一公里当数据集超过500台设备时手动操作不现实。以下脚本将Excel数据一键转为带公章水印的PDFfrom fpdf import FPDF import pandas as pd class DGAPDFReport(FPDF): def header(self): self.set_font(Arial, B, 12) self.cell(0, 10, XX电网公司DGA诊断简报, 0, 1, C) self.set_font(Arial, , 10) self.cell(0, 6, f生成时间{pd.Timestamp.now().strftime(%Y年%m月%d日 %H:%M)}, 0, 1, R) self.line(10, self.get_y(), 200, self.get_y()) # 分隔线 def chapter_title(self, title): self.set_font(Arial, B, 12) self.cell(0, 10, title, 0, 1, L) self.ln(4) def chapter_body(self, body): self.set_font(Arial, , 10) self.multi_cell(0, 6, body) self.ln() # 读取Excel数据 df pd.read_excel(Cleaned_DGA.xlsx, sheet_nameCleaned_DGA) df df.sort_values([sample_id, sampling_time], ascending[True, False]) # 为每台设备生成报告 for device_id in df[sample_id].str.split(-).str[0].unique(): pdf DGAPDFReport() pdf.add_page() # 设备头部信息 pdf.chapter_title(f设备编号{device_id}) recent df[df[sample_id].str.startswith(device_id)].iloc[0] # 生成诊断文本 report_text f取样时间{recent[sampling_time]} C₂H₂浓度{recent[gas_C2H2]:.1f} μL/L{ if recent[gas_C2H2]5 else ⚠️ 超标} 三比值法编码{int(recent[gas_CH4]/(recent[gas_H2]1e-6)0.1)}{int(recent[gas_C2H2]/(recent[gas_C2H4]1e-6)0.1)}{int(recent[gas_C2H4]/(recent[gas_C2H6]1e-6)0.1)} 诊断结论{建议立即停电检查 if recent[gas_C2H2]5 else 运行正常定期跟踪} pdf.chapter_body(report_text) # 保存PDF pdf.output(freport_{device_id}.pdf) print(f已生成 {device_id} 报告)落地价值某次迎峰度夏特巡中该脚本2小时内生成237份PDF运维班长用平板电脑逐台展示给值班调度员30分钟内完成全部设备风险评级——Excel数据集至此完成了从“数据原料”到“决策燃料”的闭环。我坚持在每个新项目启动时花三天时间手工校验前100条DGA数据用计算器重算一遍三比值用游标卡尺量扫描件PDF的表格线距确认是否为原始报告给检测机构打电话核实C₂H₂复测方法。这看起来低效但后来所有模型迭代都建立在这个“可信锚点”上。当算法同事抱怨数据噪声大时我总会打开那份Excel指着gas_C2H2列里一个被荧光笔圈出的0.8说“就这个数我们查了三个月的色谱图谱确认是真实电晕。”——数据集的价值永远不在行数多少而在每一行背后是否站着一个敢签字的工程师。希望帮到你。本文还有配套的精品资源点击获取