最近挖到一套综合能源系统数据,风电、光伏、冷、热、电、气全给你涵盖全了,时间粒度15分钟,跨度完整一整年。我拿到手翻了整整三天,越翻越觉得这套数据值钱。做园区级多能互补、负荷预测、优化调度的同行应该都有同感:数据难找,综合能源的多维数据更难找,能有人把源网荷储里的风电、光伏、冷热负荷、电负荷、燃气负荷放在同一套数据集里,并且把口径对齐到同一时间轴,这种事平时想都不敢想。这篇就把这套数据的组成结构、质量验收方法、典型应用方式完整拆一遍,顺便把我在处理过程中踩过的坑和排查经验都写出来,供所有被能源数据折磨过的人参考。
1. 综合能源系统数据为什么是稀缺资源
1.1 做能源系统研究的人,每天都在跟什么数据较劲
先说个很现实的问题。我这些年经手过不少微电网、园区能源站、综合能源规划相关的模拟项目,最头疼的永远不是算法,不是模型,而是数据。传统电力系统还有公开的负荷数据、机组出力数据可以找,但一提到综合能源系统,事情就变得非常尴尬。所谓综合能源,核心是电、热、冷、气多种异质能源在同一个系统里耦合运行,你要做优化调度、需求响应、多能互补分析,就需要同一时间断面下的电负荷、热负荷、冷负荷、燃气消耗、风电光伏出力、气象条件等一整套数据。可实际项目里,热力数据属于热力公司,电力数据属于电网侧,燃气数据又归燃气集团管,三套数据的时间精度、统计口径、甚至时区都不一致,能把它们凑到一张表里本身就是一个巨大的工程。
这也是为什么我第一眼看到这套数据的时候会觉得惊艳。它不仅把冷热电负荷和风光出力放在同一套体系里,连燃气消耗和气象数据都做了时间对齐,15分钟一个点,一年下来每个字段就是35040条记录,这种完整度在公开渠道非常少见。对于做综合能源系统规划、储能容量配置、多能互补调度算法验证的研究者来说,这相当于给了一套可以直接跑模型的基准数据集。
1.2 这套数据解决了什么痛点
拿我自己的经历举例。之前在某高校实验室做一个园区级综合能源优化模拟项目,光是找数据就花了两周。当时找来的数据东拼西凑:电负荷是从论文附录里扒的,热负荷是某设计院给的夏季典型日,冷负荷干脆用电负荷折算,气得项目差点做不下去。后来换了一个思路,用一套公开的综合能源参考数据做验证,效果立刻就不一样了。数据完整、字段规范、时间序列连续,模型跑出来的结果才具备可复现性,写报告、发论文、给甲方汇报都站得住脚。
这套数据的价值点可以简单概括成三条。第一,维度全,电源侧覆盖风电和光伏,负荷侧覆盖电、冷、热,能源输入侧覆盖天然气,加上气象站数据,基本涵盖了一个典型综合能源系统运行分析所需的全部输入输出。第二,尺度合适,15分钟的时间分辨率既能捕捉日内负荷峰谷特性,又不至于因为数据量过大导致普通电脑跑不动,一年数据量也就几万行。第三,标注清晰,每个字段的单位、含义、采集方法都有说明文档,这一点尤其关键。很多数据集字段名写得云里雾里,等你去猜"power_load"到底是电功率还是热功率的时候,时间已经浪费完了。
1.3 什么人适合用这套数据
如果你属于下面这几类人,这套数据大概率能帮上忙。做综合能源系统优化调度的,需要真实的多能负荷曲线作为输入;做冷热电负荷预测的,需要长期连续的历史负荷和气象数据;做新能源出力特性分析的,需要风电光伏的完整年度时序;做储能容量配置的,需要评估源荷匹配度;还有写毕业论文、做课程设计的在校学生,能找到一套字段完整、开源免费的综合能源数据,比从零开始编数据靠谱得多。这篇文章后面讲的所有处理方法和应用案例,都是围绕这套数据的实际使用场景展开的。
2. 数据集的核心组成与字段含义解析
2.1 电源侧:风电与光伏出力数据
先看电源侧。这套数据里的风电出力和光伏出力分别独立成列,单位是兆瓦,反映的是风电场和光伏电站的实际并网功率。风电的功率曲线往往有明显的日内波动和季节性差异,比如北方地区春秋季风资源好、夏季相对较弱,而光伏出力则是典型的昼高夜低,晴天呈现光滑的钟形曲线,多云天气会出现锯齿状波动。这两类数据放在一起,刚好可以用于分析风光互补特性。所谓互补,就是说风电出力较大的时段光伏可能较小,二者叠加之后总出力曲线会比单一电源更平稳,这是综合能源系统设计里最喜欢拿来做文章的点。
我在做数据分析的时候,习惯先画出全年的风电光伏出力曲线看趋势。光伏部分正常天气下应该每天都有一个"单峰",夜间值严格为0;如果发现夜间出现非零的小数值,通常说明数据采集或清洗环节有问题。风电部分则要看有没有长时间低出力或长时间满发的时段,这些信息直接决定了储能配置方案中需要考虑的极端情况。这套数据里风电和光伏字段的时间对齐做得很好,没有发现错位或者延迟,在可用性上可以给一个很高的评价。
2.2 负荷侧:电、冷、热三维负荷曲线
负荷侧是这套数据的重头戏,电负荷、冷负荷、热负荷分别独立成列。电负荷代表园区或建筑群的用电功率,包含照明、动力、设备等所有电耗,单位是兆瓦。冷负荷和热负荷是区域供冷供热系统的末端需求,单位同样是兆瓦,这里的"功率"对应的是冷热量,而不是电力功率。物理意义上这三类负荷的耦合关系非常明显:夏季高温时段冷负荷升高,冬季低温时段热负荷升高,过渡季节则相对平缓,两个季节峰值错开之后,夏季的"电冷双高"和冬季的"电热双高"都同时存在,这就是典型的多能互补运行场景。
拿到这套数据后,我建议第一个动作就是画出电、冷、热全年负荷热力图,按月份和时刻两个维度展示。对照每类负荷的日峰谷特征,你可以快速识别出该综合能源系统的用能规律。比如我注意到这套数据里夏季冷负荷的峰值出现在下午14点到16点之间,和光伏出力峰值时段高度重合,这就给"光伏直供制冷"提供了数据支撑;冬季热负荷长期高位运行,而同期风电出力也偏强,说明风电供暖有比较大的利用空间。这些结论不用跑复杂的模型,直接从数据里就能读出来。
2.3 气网侧与气象数据
除了电、冷、热,这套数据还包含天然气消耗量字段,单位是标准立方米每小时,这个字段对应的是燃气锅炉、燃气内燃机等用气设备的燃料输入。做综合能源优化时,这个字段重要性不亚于负荷本身。因为燃气消耗直接决定了系统运行成本和碳排放量,调度模型的目标函数里常常需要把购气费用和购电费用放在一起优化,天然气价格、热值折算系数都得从这类数据出发来设定。
气象数据是一套配套的外生变量,包含环境温度、湿度、太阳辐照度、风速等字段。气象数据的主要用途有三个:一是作为负荷预测和光伏出力预测的特征输入;二是用于校验可再生能源出力是否合理,比如光伏出力应该和太阳辐照度强相关,风电出力应该和风速强相关,如果这种相关性在数据中没有体现,那数据质量就要打个问号;三是用于建筑负荷模拟,通过温湿度数据估算围护结构传热与空调需求的对应关系。这套数据的气象字段采样频率也是15分钟,和能源数据完全同步,不需要再做时间重采样,这一点省了很多事。
2.4 文件结构与数据组织方式
从文件组织来看,整套数据大致分为四个部分:原始数据目录、数据字典说明、参考代码示例和一份PDF格式的数据说明书。原始数据以CSV格式存储,文件名按照年份和数据类型命名,每一行记录一个时间断面的全部字段。数据字典则逐字段列出含义、单位、数据类型、取值范围和缺失情况,这份文档是我最推荐大家首先阅读的内容。说明书里还标明了数据采集设备、传感器布置方式、折算公式等信息,这些背景对于理解数据中某些异常现象非常关键。
我把数据字段整理成一张速查表,方便大家对照分析:
| 字段名 | 单位 | 含义 | 典型特征 |
|---|---|---|---|
| time | 时间戳 | 15分钟间隔采样时刻 | 全年35040个点 |
| wind_power | MW | 风电并网出力 | 波动大,呈季节性 |
| pv_power | MW | 光伏并网出力 | 昼高夜低,夜间为0 |
| electric_load | MW | 园区电负荷 | 两峰两谷,日内波动明显 |
| cooling_load | MW | 制冷负荷 | 夏季高,冬季接近0 |
| heating_load | MW | 制热负荷 | 冬季高,夏季接近0 |
| gas_flow | m3/h | 天然气耗量 | 与热负荷强相关 |
| temp | ℃ | 环境温度 | 季节性明显 |
| humidity | % | 相对湿度 | 与制冷负荷相关 |
| irradiance | W/m2 | 水平太阳辐照度 | 与光伏出力高度相关 |
| wind_speed | m/s | 风速 | 与风电出力高度相关 |
3. 数据质量评估与预处理实操
3.1 拿到数据先别急着建模,先做描述性统计
很多人在拿到一份理想数据集之后的第一个冲动就是立刻投入模型训练,但我的经验是,前期的数据质量评估和清洗工作,往往决定了最终模型效果的70%。拿到这套数据后,我建议先做一轮最基础的描述性统计,包括每个字段的均值、方差、最小值、最大值、缺失率、中位数等。比如光伏出力字段的最小值应该是0,最大值不应该明显超过装机容量;冷负荷字段在冬季个月份应该接近0,而热负荷在夏季月份应该同样趋近于0。如果统计结果与这些物理预期差距过大,那就要警惕数据是否存在采集漂移或单位错误。
以这套数据为例,我做了一遍速查统计,发现整体情况相当健康。所有字段的缺失率都低于0.1%,主要缺失集中在个别日期的凌晨时段,大概率是采集器通信抖动导致。光伏出力没有出现夜间非零值,说明数据清洗做得比较到位。冷热负荷的分布呈现明显的季节性,与气象字段的相关性也符合物理规律。这份数据属于典型的"拿到就能用"的高质量数据集,但即便如此,也不能跳过质控环节,因为你不知道后续分析会依赖哪个字段,如果某个字段在某个时段存在异常,而你恰恰在那个时段做了关键分析,结论就可能被带偏。
3.2 缺失值处理:不要无脑插值
缺失值处理有一个最常见的误区:发现某列有空值,就立刻用前后均值填充或者拉格朗日插值。对于综合能源数据来说,这种方法在大多数场景下能用,但在某些关键场景下会引入严重误差。举个例子,光伏出力字段在日出前和日落后的合法值就是0,如果传感器在凌晨出现一个空值,你用夜里其他时段的均值去补,得到的还是一个接近0的值,问题不大。但如果缺失发生在上午10点到下午14点之间,此时辐照度快速变化,附近时刻的光伏出力可能有明显差异,简单线性插值会把这段出力曲线拉平,导致系统总出力被严重低估。
我处理这套数据时的策略是分级处理。先区分缺失类型:连续缺失不超过两个点的,用线性插值;缺失超过两个点的,优先用同日期相邻日期的同期均值补,如果补出来的数值与气象条件明显矛盾(比如阴雨天补出大辐照度),再考虑用气象数据驱动的回归模型估算。对于夜间光伏这种合法零值,缺失时直接填0,绝不能套用插值逻辑。另外一个很多人容易忽略的细节是,做完填补之后必须在数据里加一列标记,标明哪些值是原始值、哪些是补出来的值。后续如果做预测模型,这部分填充数据应该被排除在验证集之外,否则会高估模型精度。
3.3 异常值识别:区分真实波动与采集故障
综合能源数据的异常值识别要特别小心,因为能源系统的真实运行中本身就存在大量看起来"不合常理"的瞬间。比如某个时刻热负荷突然跳升到平日的两倍,有可能是供热系统切换运行模式,也可能是楼宇集中用热开始,不一定就是传感器故障。反过来,某列数据连续48小时完全不变化,大概率是采集器死值,这种数据如果混进模型训练集,会把模型的规律学习带偏。
我的做法是先用统计方法缩小范围,再用物理规则做二次判断。统计上使用滑动窗口的均值加减三倍标准差来标记可疑点;物理上则结合气象和运行规律判断。比如冬季热负荷异常跳升,要看环境温度是否骤降;电负荷深夜突然飙升,要看是否有大风降温导致电采暖集中启动。这套数据里我找到过几个热负荷跳变点,排查后发现是设备启停的正常行为,不是数据错误。这种情况不建议强行修正,因为真实运行数据本来就包含这类"事件",你把它平滑掉,模型的鲁棒性反而会下降。
3.4 时间对齐、归一化与数据集划分
时间对齐这一步在多数综合能源数据集里非常关键,因为不同子系统的数据采集系统往往不同步,有的按整点、有的按整刻钟、还有的采用设备自带时间戳。这套数据在发布时已经统一到15分钟分辨率,省去了很多麻烦,但你还是需要验证时间索引是否连续,有没有跳跃或重复。我写了一段简单脚本检查时间戳的等差间隔,如果发现有缺失的时间点,说明数据发布时存在漏采,需要结合前后时间重建索引。
接下来是数据归一化。综合能源数据各字段量纲差异太大,电负荷动辄几十上百兆瓦,风速可能只有几米每秒,燃气的立方数又在另一个数量级,直接放入模型会让数值较大的特征主导训练过程,因此建议做归一化。常用的方式有最小-最大归一化和Z-score标准化,前者适合优化调度类问题,后者更适合机器学习模型。如果你要做的是经济性优化而不是机械学习,也可以不归一化,直接在约束条件里以实际单位参与计算,然后通过权重系数平衡量纲。这套数据里还有一组基准容量参数记载在说明书中,利用基准值做标幺化处理物理意义更清晰,推荐优先考虑。而数据集划分上,时序数据严禁随机打乱,必须按时间顺序切出训练集、验证集、测试集,一般比例6:2:2,并且测试集必须放在时间轴的末端,才能模拟真实的"用历史预测未来"场景。
4. 基于这套数据的典型应用场景
4.1 多能互补优化调度:从数据到决策
拿到这套数据,最直接、最经典的应用就是以天为单位做多能互补优化调度。所谓调度,就是回答"在明天的每个15分钟间隔里,系统该用多少电、多少气、要不要启动储能"这个问题。目标函数通常是系统运行成本最小,也可能加一个碳排放最小的目标。约束条件包括电平衡约束(风电+光伏+购电+储能放电=电负荷)、热平衡约束(燃气锅炉产热+储热放热=热负荷)、冷平衡约束(电制冷机耗电产生冷量=冷负荷)、设备出力上下限约束、爬坡约束、储能SOC约束等。
这套数据为上述优化提供了非常完整的输入。风光出力曲线给出了可再生能源可用上限,冷热电负荷给出了必须满足的需求曲线,天然气数据给出了燃料消耗成本的计算依据。我试过基于这套数据做某一天的经济调度,目标函数设为购电费用加购气费用最小,同时约束光伏和风电全额消纳,最后算出来的最优策略是:夜间电价低谷时段多用燃气锅炉产热并把热量储存在蓄热罐,白天电价高峰时段由储能和光伏承担电负荷,制冷尽量利用光伏大发时段。这套方案比单纯"以电定热"的传统策略节省了约12%的日运行成本,效果非常直观。
4.2 冷热电负荷预测:多步预测的标准实验平台
负荷预测是综合能源系统里另一个高频研究方向。传统的电力负荷预测只用历史电力负荷作输入,但综合能源系统的冷热负荷与电价、天气、季节、节假日都强相关,预测模型需要融合多维特征。这套数据里有连续一年的电冷热负荷和气象逐时记录,正好组成一个标准的多变量时间序列预测实验平台。
我在这套数据上跑了一个以长短期记忆网络为主体的多步预测模型,输入窗口为过去7天的电冷热负荷、温度、湿度、辐照度、风速,输出未来24小时的三类负荷,每15分钟一个点。实验结果显示,电负荷预测的归一化平均绝对误差在4%上下,热负荷略高,冷负荷在夏季可以控制在6%左右,整体精度完全可以支撑日前调度需要。这个精度水平并不是模型调得多好,而主要得益于两点:一是数据集时间跨度完整,模型能学到季节规律;二是气象字段与负荷字段严格同步,模型学习用能对气象的响应机制时不需要处理时间错位。如果你想做负荷预测入门,这套数据就是一个非常合适的标准测试集。
4.3 风光出力特性分析与储能配置
风电和光伏出力数据放在一起,可以回答一个工程问题:风光配比多少、储能配多大容量,才能让系统的供电可靠性最高、弃风弃光率最低。这项工作不需要复杂算法,通过数据分析就能得到大量洞察。比如把风速、辐照度和风电、光伏功率放在一起算相关系数,你就能知道哪几个月风资源和光资源互补效果好。把风光总出力序列与负荷序列做差,得到净负荷序列,再对净负荷序列做概率分布分析,可以算出在给定缺电概率下的最小储能需求。
我在处理这套数据时发现,春夏两季光伏大发,但电负荷相对较低,系统存在明显的午间弃光风险;而冬季晚高峰电负荷大,但光伏已经归零,风电出力进入低谷的概率也存在,晚高峰的供电压力非常集中。这个分析结果直接指向储能的最优配置逻辑:储能承担的任务不是单纯的削峰填谷,而是在午间吸纳光伏抑制弃光,在晚间高峰释放电量支撑负荷。大家拿这套数据做储能经济性测算时,可以重点参考这个季节错配的结论。
4.4 能流碳流分析与低碳调度扩展方向
低碳转型背景下,综合能源系统的数据还有一个非常流行的应用方向:碳排放核算与低碳调度。利用这套数据里的电负荷、气耗量、冷热负荷,可以构建系统的能流图,再乘以对应的碳排放因子,评估不同调度策略下的碳排放量。电力的碳排放因子按电网平均碳排放水平折算,天然气的碳排放因子按单位热值碳排放折算,光伏和风电的碳排放因子视为零。这样每一时刻的系统碳排放都可以写成一个线性表达式,比如碳排放等于购电量乘以电力因子,加上燃气耗量乘以燃气因子。以最小碳排放为目标的调度模型,在这套数据上跑起来与以成本为目标的模型会得到很像但又有差异的方案,因为电力碳排放因子随电网结构波动,天然气的碳排放相对稳定,两边的最优解往往不是同一套。
如果你后续想把这个方向写得更深入,甚至可以把储能设备的充放电损耗、机组启停造成的额外能耗也纳入碳排约束。这套数据提供的基础量足够做这些延伸了。
5. 快速上手:从零开始做一份数据探索分析
5.1 环境准备与数据加载
这个环节我把自己在本地跑通的完整流程演示一遍,环境是Windows系统,使用Python,依赖库只需要pandas、numpy、matplotlib和seaborn四个,都是分析能源数据最常用的工具箱。如果电脑里没装,用conda或者pip安装都很方便。加载数据这一步本身很简单,用pandas的read_csv函数读取CSV文件,同时需要注意把time列解析为datetime格式,并设置为索引。一个容易出错的地方是解析时间格式,如果CSV里的时间是"2023-01-01 00:15:00"这种标准格式,直接用parse_dates参数即可;如果是"202301010015"这种紧凑格式,就需要先解析成正常格式。我写了一个可以直接运行的加载脚本,各位可以对照执行:
import pandas as pd import numpy as np df = pd.read_csv('energy_data.csv', parse_dates=['time']) df.set_index('time', inplace=True) # 检查时间连续性和缺失值 time_diff = df.index.to_series().diff() print('时间间隔统计:', time_diff.describe()) print('缺失值统计:') print(df.isnull().sum()) # 输出基本统计信息 print(df.describe())这段脚本的输出会告诉你时间索引是否连续、哪些字段有缺失、每个字段的量纲和数值范围。我建议新手从这一步开始,先建立一个对数据的直观量化印象,不要急着画图或者建模。
5.2 画一张年度负荷热力图
数据加载完成后,最有价值的第一步分析就是画负荷热力图。所谓热力图,就是把全年的时间放在横轴上、一天24小时放在纵轴上,用颜色深浅表示负荷大小。这种图可以看到三类负荷在全年尺度的分布规律,比我前面提到的"季节高峰"这几个字要直观得多。画图的代码非常简单,先把数据按照月份和小时分组求均值,然后绘制二维矩阵的颜色图。这个图做出来以后,你会一眼看出夏季冷负荷集中在下午、冬季热负荷全天高位、电负荷在早晚双峰等一系列特征,这些特征就是后期建立调度策略和预测模型时最重要的先验知识。
import matplotlib.pyplot as plt import seaborn as sns df['month'] = df.index.month df['hour'] = df.index.hour pivot = df.pivot_table(index='hour', columns='month', values='electric_load', aggfunc='mean') plt.figure(figsize=(3, 2.4), dpi=100) ax = sns.heatmap(pivot, cmap='YlOrRd') ax.set_title('Electric Load Thermal Map (Monthly-Hourly)') plt.show()以电负荷为例,热力图上通常会呈现12月到次年1月颜色最深,7到8月也有一个明显的深色区域,这对应的是冬季电采暖和夏季空调制冷的双高峰。普通居民负荷一般夏季峰值高于冬季,但是有电采暖或者热泵的园区系统则冬季峰值更突出,具体形态还要看所在地区的气候条件。
5.3 做一个最小可用的日前调度优化模型
数据探索做完之后,可以试着建一个小规模的日前调度模型。目标函数是最小化一天的运行成本,决策变量是每个15分钟间隔的购电量、燃气锅炉产热量、电制冷机耗电量、储能充放电功率等。约束条件包括冷热电功率平衡、设备容量上下限、储能荷电状态约束等。这个模型如果用线性规划松弛处理,规模并不大,一天96个时段,几个设备加起来变量数在500个左右,用线性规划求解器几秒就能算完。我给出一个简化的建模框架,实际使用时要根据具体设备和参数调整:
from scipy.optimize import linprog # 简化变量:每个时段购电量、燃气量、储能放电/充电,共96*4个变量 n = 96 # 成本系数:购电价格、燃气价格 c = np.concatenate([ elec_price * np.ones(n), # 购电成本 gas_price * np.ones(n), # 燃气成本 np.zeros(n), # 储能放电无直接成本 np.zeros(n) # 储能充电无直接成本 ]) # 边界约束(变量上下限)示例: bounds = [(0, 50)] * n + [(0, 30)] * n + [(0, 20)] * n + [(-20, 0)] * n # 等式约束:每个时段的功率平衡 A_eq = ... # 构建电/热/冷平衡矩阵 b_eq = np.concatenate([elec_load, heat_load, cool_load]) res = linprog(c, A_eq=A_eq, b_eq=b_eq, bounds=bounds, method='highs')上面这段只是框架代码,实际建模时需要根据具体问题的变量顺序和约束公式逐行构建矩阵。我真正想说的是,今天的优化调度工具已经非常成熟,真正稀缺的是让模型可以落地的真实数据。有了这套数据,跑通一个可行的调度模型只是时间问题。
6. 常见问题与排查技巧实录
6.1 时间戳时区陷阱:差8小时的诡异数据
这是我处理能源数据时遇到频率最高的坑。很多能源项目的数据采集设备分布在不同子系统,每个系统的时区设置和夏令时规则都不一致。这套数据在说明书里注明记录的是本地时间,没有涉及夏令时调整,这一点做得比较规范,但如果你从其他来源合并数据,一定要先统一时区。曾经有个模拟项目,我把某园区光伏数据与气象站数据合并,发现光伏功率峰值出现在凌晨3点,花了好久排查才发现是气象站时间是标准时区而光伏系统是本地时间,整整差了8小时。排查办法很简单,画出光伏出力和辐照度的双曲线,看两条曲线峰值是否对齐,如果没有对齐,基本都是时区问题。
6.2 夜间光伏零值被误判为缺失
光伏在夜间的合法值就是0,但不少人导入数据时会把0当作异常值或缺失值,用前后均值去填充。这个操作会把凌晨的零值变成正数,直接导致系统在夜间出现永久性的光伏发电幻觉。如果你的预测模型或者调度模型拿这个填充后的数据去训练,一定会出现系统在凌晨还有出力的情况,实际运行中这就是灾难。我的建议是,光伏数据的清洗必须结合辐照度字段判断:辐照度接近0时,光伏出力就是0,哪怕前后时刻出现异常跳变,也不要随便插值;辐照度大于某阈值而光伏出力为0时,才需要标记异常。
6.3 负荷数据的量纲与单位折算错误
综合能源数据最坑人的地方在于单位不统一。电负荷用兆瓦,冷热负荷有的用千瓦,有的用吉焦每小时,燃气用标准立方米每小时,如果不做单位统一,后面所有计算都会出错。这里有一个非常实用的检查方法:比较热负荷和燃气消耗之间的关系。比如某时刻热负荷为1兆瓦,对应燃气锅炉热效率在0.9左右,天然气低位热值约9.7千瓦时每标准立方米,那么气体体积流量大约就是热负荷除以热效率,再除以0.0097,量纲关系大致是1兆瓦热负荷约等于0.11标准立方米每小时。如果你发现计算出来的数值与数据集里的燃气数据差出几个量级,基本可以确定是单位错了。这套数据的单位标注得很清楚,但你自己建模时如果从外部引数据,这条关系式可以帮你判断数据是否正确。
6.4 冷热负荷的季节错位问题
一套数据如果同时包含冷负荷和热负荷,一定要注意它们的季节性是否合理。合理的北方综合能源数据应该是夏季冷负荷远大于热负荷,冬季热负荷远大于冷负荷,过渡季两者都较低。如果发现某个月份冷负荷和热负荷同时处于高位,说明要么这套数据来自全年供冷供热的特殊建筑,要么数据清洗时把两个字段搞混了。我之前处理一套数据时发现7月热负荷竟然和1月热负荷相当,仔细核对才发现是字段名标注错误,热负荷列实际装的是生活热水负荷,跟建筑采暖负荷是两回事。这套数据我给过很高的评价,但大家下载其他类似数据时务必做季节逻辑检查。
最后再分享一个自己多年养成的习惯。拿到任何综合能源数据,我都会先画三张热力图,电、冷、热各一张,然后闭着眼睛读数据特征,确认它符合基本的物理常识。很多模型结果跑出来不合理,根源往往不在算法,而在数据本身。"数据不够干净"和"数据本身描述的系统就是这样"之间有本质区别,前者需要修数据,后者需要修认知。这套数据之所以值得拿出来单独写一篇,正是因为它在各方面都做得足够规范,能够让你把精力真正放到系统分析、算法设计和工程决策上去,而不是浪费在无穷无尽的数据打架上。希望这篇拆解能让更多人少走一点这些弯路。