小岳
2026-10-23
点 赞
0
热 度
6
评 论
0

96 点日负荷曲线:用 pandas 把电表数据算成该看的指标

  1. 首页
  2. 数据分析
  3. 96 点日负荷曲线:用 pandas 把电表数据算成该看的指标

文章摘要

摸鱼小助手

96 点日负荷曲线:用 pandas 把电表数据算成该看的指标

拿到一份 15 分钟粒度的电表数据,第一件该做的事不是画图,而是把峰谷差、负荷率、日电量这三个数算出来。它们决定了后面是调变压器容量、排检修窗口,还是走需量申报。这些计算用 pandas 十几行就能跑完,本文的指标全部来自本机实测。

项目出处

本文用 pandas(BSD 3-Clause,实测 2.3.3)处理时间序列,绘图用自绘 SVG。pandas 的定位很清晰:带时间索引的表格计算,电表数据恰好是它的主场。

读取与重采样

现场电表常按 5 分钟或 15 分钟上送。先统一到 15 分钟粒度,再算指标:

import numpy as np, pandas as pd

# 96 个点:一天按 15 分钟切分
s = pd.Series(values, index=pd.date_range("2026-10-19", periods=96, freq="15min"))

print(len(s))                       # 96
print(s.max(), s.min(), s.mean())   # 431.5 / 293.2 / 339.1
print(s.max() - s.min())            # 峰谷差 138.3
print(s.mean() / s.max() * 100)     # 负荷率 78.6 %
print(s.sum() * 0.25)               # 日电量 8137 kWh
print(s.idxmax().strftime("%H:%M"), s.idxmin().strftime("%H:%M"))

实测输出:峰值 431.5 kW 出现在 09:15,谷值 293.2 kW 出现在 15:15,平均 339.1 kW,日电量约 8137 kWh。

图1 96 点日负荷曲线(作者自绘)

三个数各自在回答什么

峰谷差 138.3 kW 回答"设备要留多少余量"。变压器按 Pmax 选,峰谷差越大,说明负荷波动越剧烈,容量利用越不经济。

负荷率 78.6% 回答"这套设备用得值不值"。负荷率等于平均负荷除以最大负荷,78.6% 在工商业用户里属于偏好的水平,说明大部分时间设备都在接近满负荷工作;如果只有 40%,就该考虑错峰或调整生产班次。

日电量 8137 kWh 回答"这个月电费大概多少"。峰谷电价下,日电量还要按峰平谷分段计价,光有总量不够,得按时间分段求和。

图2 关键指标与滑动平均(作者自绘)

平滑与基线预测

尖峰会让指标失真,做趋势判断时先做滑动平均。4 个点(1 小时)窗口把峰谷差从 138.3 kW 压到 125.4 kW,降了 9.3%,曲线形态更清楚。

预测基线用最朴素的办法:取前一天同一时刻的值。实测 MAPE 为 7.37%,作为短期预测的底线基准足够,任何模型如果跑不出比 7.37% 更低的误差,就没有上线的必要。

峰谷电价下的分段统计

日电量只是总量,电费还要按尖峰平谷分时段计价。用一行映射把 96 个点打上时段标签,再分组求和:

def seg(ts):
    h = ts.hour
    if 8 <= h < 11 or 18 <= h < 21: return "峰"
    if h >= 23 or h < 7: return "谷"
    return "平"

g = s.groupby(s.index.map(seg)).sum() * 0.25
print(g.round(0).to_dict())   # {'峰': 2226.0, '平': 3218.0, '谷': 2681.0}

实测结果:峰段 2226 kWh,平段 3218 kWh,谷段 2681 kWh,峰段占比 27.4%。这个比例决定了两件事——如果峰段超过 40%,错峰生产的收益会很明显;如果谷段不足 25%,说明夜班负荷偏重,需量申报要按峰值留余量。

几个真实的坑

第一,时间索引必须连续。 电表掉线会留下空行,直接 sum() 会把缺测时段算成零负荷,日电量偏低。正确做法是先 reindex 补齐再 interpolate,或者显式标记缺失。

第二,频率字符串大小写变了。 pandas 2.2 起 freq="H" 触发弃用警告,2.3 建议写 "h";"T" 同理改成 "min"。老代码升级时会刷一屏警告,不影响结果但会淹没真正的报错。

第三,单位换算别写错。 15 分钟一个点,每个点代表 0.25 小时,日电量要乘 0.25 而不是 15;把 kW 当 kWh 直接累加是最常见的口径错误,能把电量放大 4 倍。

第四,时区。 电表数据通常带本地时区,date_range 默认 naive。跨夏令时或做跨年统计时,naive 时间会错位一小时,建议统一转成带时区的索引再比较。

一份数据的三种用法

同一份 96 点数据,规划岗位拿它算容量与电量,运维岗位拿它找异常时段(连续多个点明显偏离基线),市场岗位拿它做需量与峰谷电价的测算。指标算对了,后面的模型才有意义——这也是为什么处理电表数据的第一步永远是先算三个数,而不是先画一张好看的图。

小结

96 点不是随便定的:15 分钟粒度是多数工商业电表的上送间隔,一天正好 96 个点。峰谷差、负荷率、日电量这三个指标,用 pandas 五行代码就能算出来,前提是时间索引连续、单位换算正确。

参考资料


本站站长,主角光环,怎么滴,你还想攻击你的站长吗,真是好big的狗胆

小岳

intp 逻辑家

站长

不具版权性
不具时效性

文章内容不具时效性。若文章内容有错误之处,请您批评指正。

目录

欢迎来到摸鱼干货栈,这里为您提供开源与摸鱼源码

8 文章数
6 分类数
0 评论数
13标签数
最近评论