当前位置:首页>python>别再盯着电价表看:用 Python 做出第一份电力可视化报告

别再盯着电价表看:用 Python 做出第一份电力可视化报告

  • 2026-07-01 13:43:49
别再盯着电价表看:用 Python 做出第一份电力可视化报告

电力交易可视化:让数据“说话”

很多电力行业新人,刚开始做数据分析时,会非常依赖 Excel 表格。

一张表几十行还好。

如果变成几百行、几千行,甚至一年 8760 小时的电价数据,问题就来了。

你盯着一列数字看半天,很难快速回答:

哪个时段电价最高?

负荷什么时候冲上去?

高价是不是集中在白天?

不同地区负荷差异大不大?

峰、平、谷、尖峰电价差异到底有多明显?

这时候,图表的价值就出来了。

因为图表能把“数字变化”变成“视觉变化”。

一条负荷曲线,可以告诉你一天的用电节奏。

一张电价走势图,可以告诉你价格什么时候抬升。

一张柱状图,可以告诉你不同分时电价时段的价格差异。

一张交互式图表,可以让你把鼠标放到某个点上,直接看到具体时间和价格。

所以,本章我们不追求复杂。

只做几张最实用的电力交易入门图表。

如果你平时拿到电价表、负荷表,只会在 Excel 里一行行看数字,这一章建议先收藏

本章会用一份教学用模拟数据,生成:

负荷趋势图、电价走势图、地区负荷对比图、分时电价对比图、负荷与电价组合图,以及一张可以用鼠标查看具体数据的交互式图表。

文末我准备了第6章配套资料包,包括完整代码、模拟数据、PNG图表示例、交互式HTML图表、图表说明报告和可视化检查清单。

一、为什么电力交易一定要会画图?

电力交易数据有一个特点:

强时性。

电价会随着时间变化。

负荷会随着时间变化。

电量会按日、按月、按年累计。

分时电价会分成尖峰、峰、平、谷等不同时段。

现货价格通常具有较强时间颗粒度,可能按小时、15 分钟或其他规则颗粒度形成和披露,具体以当地市场规则和公开数据口径为准。

所以,电力数据非常适合可视化。

你可以先记住一个判断标准:

只要数据和时间有关,大概率就值得画成趋势图。

比如:

小时负荷数据,可以画负荷趋势图。

小时电价数据,可以画电价走势图。

不同地区负荷,可以画对比折线图。

峰、平、谷、尖峰价格,可以画分时电价对比图。

一个月电价变化,可以画交互式图表。

图表不是为了好看,而是为了更快发现问题。

但也要注意:图表只是辅助观察,不是最终结论。

比如:看到电价高,只能说“该时段在本样本中价格较高”。

不能直接说“该时段一定适合放电套利”。

看到负荷高,只能说“该时段负荷较高”。

不能直接说“该用户一定适合做储能”。

看到负荷曲线和电价曲线同步上升,也只能说明在图表上存在同步变化现象。

不能直接证明负荷导致电价上涨。

真实判断要结合规则、合同、成本、负荷特征、结算口径和项目参数。

二、Matplotlib 进阶:负荷趋势图和电价走势图

第3章里,我们已经用 Matplotlib 画过简单的电价趋势图。

本章会稍微升级一下。

Matplotlib 是 Python 里非常常用的静态绘图库。

这一章我们会用它做几件事:

添加标题。

添加横轴和纵轴名称。

添加图例。

添加网格线。

保存图片。

让图表更适合放进文章、报告或学习笔记里。


1. 负荷趋势图:看用电节奏

负荷趋势图适合回答:

一天中什么时候用电多?什么时候用电少?有没有明显高峰?是不是夜间负荷很低?有没有晚高峰?

对工商业用户来说,负荷曲线很重要。

因为它可能和这些问题有关:

生产班次、空调负荷、设备集中启动、最大需量、储能削峰、需求响应、用电成本优化。

但注意:

负荷趋势图只能告诉你“负荷什么时候高、什么时候低”。而是否适合做储能,还需要结合:电价机制、最大需量或容量电费、负荷持续时间、储能功率和容量、充放电效率、投资成本、并网条件、交易规则、结算口径。这些都不是一张图能直接回答的。


2. 电价走势图:看价格变化

电价走势图适合回答:

电价什么时候低?什么时候高?高价是否集中在某些时段?是否存在明显波动?不同价格时段之间差异是否值得关注?

*需要特别提醒:图表只能帮助观察价格变化,不能直接得出交易结论。比如:电价高,不等于一定能套利。电价低,也不等于一定适合充电。真实业务还要结合市场规则、结算口径、负荷曲线、交易权限、项目参数和风险约束。

三、多维度可视化:地区负荷对比、分时电价对比

只看一条曲线,能看趋势。

但真实分析中,我们经常需要对比。

比如:

A 地区和 B 地区的负荷走势有什么不同?峰、平、谷、尖峰电价差异有多大?白天和夜间用电差异明显吗?不同区域是否存在负荷高峰错位?

这时候就要做多维度可视化。

本章会做两类图:

第一类:地区负荷对比图。

第二类:分时电价对比图。


1. 地区负荷对比图

假设我们有两个地区:

华北示例区。

华东示例区。

它们在同一天的负荷变化不同。

把两条负荷曲线放在同一张图里,就能直观看出:

哪个地区负荷更高。

哪个地区晚高峰更明显。

两个地区负荷变化节奏是否一致。

*注意:本章地区名称只是教学示例,不代表真实行政区,不代表真实电网区域,不代表真实华北、华东区域负荷数据。


2. 分时电价对比图

分时电价对比图适合用柱状图。

比如本章教学模拟数据中设置:

谷段电价:0.35 元/kWh。

平段电价:0.65 元/kWh。

峰段电价:0.95 元/kWh。

尖峰电价:1.20 元/kWh。

画成柱状图以后,读者能很直观地看到:

哪个时段最贵。

哪个时段最便宜。

尖峰、峰、平、谷之间差异有多大。

*本章使用的是教学用模拟分时电价。真实峰、平、谷、尖峰时段和价格,需要根据所在省份、用户类别、电压等级、用电性质、最新分时电价政策、供电公司公告以及用户实际合同结算口径核验,不能直接套用本章示例。

四、交互式可视化:用 Plotly 做可拖动电价图

Matplotlib 适合做静态图。

静态图适合放在公众号、报告、PPT、Word 文档里。

但有时候,我们希望图表能拖动、缩放、悬停查看数据点。

这时候可以用 Plotly。

Plotly 可以用来生成交互式图表。

本章用 Plotly 做一张交互式电价图。

运行后会生成一个:

interactive_price_chart.html

你可以用浏览器打开。

打开后,可以:

拖动图表。缩放时间范围。鼠标悬停查看具体电价。查看对应时段类型和负荷。

这类图表很适合做内部分析、培训演示和自用数据探索。

五、本章实操成果:一份简单可视化报告

本章目标是让零基础读者完成一个明确成果:

用 Python 自动生成一份简单的电力交易数据可视化报告。

这份报告包括:

负荷趋势图、电价走势图、地区负荷对比图、分时电价对比图、负荷与电价组合图、交互式电价图、图表说明文本报告。

这不是复杂的商业分析报告。而是一份入门版可视化报告模板。

先跑通。再理解。最后再逐步替换成自己的合规数据。

六、示例数据说明

本章使用教学用模拟数据。

数据包含两个示例地区一天 24 小时的负荷和电价信息。

字段包括:

字段名
含义
datetime
时间
region
地区
load_mw
负荷,单位 MW
price_yuan_kwh
电价,单位 元/kWh
period_type
时段类型:谷、平、峰、尖峰

本章会自动创建一份 CSV 文件:

chapter06_visual_data.csv

*本章数据为教学用模拟数据,不代表任何真实地区、真实用户、真实电价、真实现货价格或真实分时电价规则。

为了减少路径报错,建议把本章代码放在一个简单英文路径中,例如:

D:\python_power_trade\chapter06

本章代码会自动在这个文件夹中创建和读取:

chapter06_visual_data.csv

处理完成后,也会把所有图表和报告文件导出到同一个文件夹中。

七、Python 完整代码

本章需要安装 3 个库:

python -m pip install pandas matplotlib plotly

如果 Windows 上 python 命令不生效,可以尝试:

py -m pip install pandas matplotlib plotly

国内网络下载较慢时,可以使用:

python -m pip install pandas matplotlib plotly -i https://pypi.tuna.tsinghua.edu.cn/simple

或者:

py -m pip install pandas matplotlib plotly -i https://pypi.tuna.tsinghua.edu.cn/simple

请新建文件:

chapter06_power_visual_report.py

第6章的目标只有一个:

把一份电力数据表,变成可以直接查看、保存和用于学习汇报的图表与报告。

你只需要先完整运行一次,确认代码能够生成 PNG 图片、交互式 HTML 图表和文字说明报告,再回头理解每一段代码。

你可以在文末私信关键词电力Python06领取本章资料包,里面已经准备好完整代码、模拟数据、图表示例和运行说明。

八、核心代码解释

1. 文件编码声明

# -*- coding: utf-8 -*-

这一行表示代码文件使用 UTF-8 编码。

现在大多数新版编辑器默认支持 UTF-8,所以这行通常不是必须的。

但对零基础读者来说,保留这一行可以减少少数电脑上中文乱码的概率。


2. 导入工具库

from pathlib import Pathimport pandas as pdimport matplotlib.pyplot as pltimport plotly.express as px

这里导入了四个工具。

pathlib:Python 自带的路径处理工具,用来帮助程序找到文件位置。

pandas:读取和处理表格数据。

matplotlib.pyplot:绘制静态图表。

plotly.express:绘制交互式图表。

本章里,你可以先把它们理解成:

Path 管文件路径。

Pandas 管数据。

Matplotlib 画静态图。

Plotly 画可交互图。


3. 找到当前代码文件所在文件夹

current_folder = Path(__file__).resolve().parent

这行代码的意思是:

找到当前这个 Python 文件所在的文件夹。

为什么要这样写?

因为很多新手会遇到一个问题:

代码运行了,但不知道 CSV、图片、HTML、报告文件保存到哪里去了。

使用这一行代码后,程序会从“当前 Python 文件所在文件夹”去生成、读取和导出文件。

这样路径更稳定,也更容易找到结果。


4. 设置输入和输出文件路径

data_file = current_folder / "chapter06_visual_data.csv"load_chart_file = current_folder / "chart01_daily_load_trend.png"price_chart_file = current_folder / "chart02_daily_price_trend.png"region_compare_file = current_folder / "chart03_regional_load_comparison.png"period_price_file = current_folder / "chart04_tou_price_comparison.png"combined_file = current_folder / "chart05_load_price_combined.png"interactive_file = current_folder / "interactive_price_chart.html"report_file = current_folder / "chapter06_visual_report.txt"

这些代码表示:

所有输入和输出文件,都放在当前 Python 文件所在文件夹中。

也就是说,代码运行后,你应该能在同一个文件夹中看到:

chapter06_power_visual_report.pychapter06_visual_data.csvchart01_daily_load_trend.pngchart02_daily_price_trend.pngchart03_regional_load_comparison.pngchart04_tou_price_comparison.pngchart05_load_price_combined.pnginteractive_price_chart.htmlchapter06_visual_report.txt

这样对新手更友好,不容易找不到文件。


5. 自动创建模拟数据

ifnot data_file.exists():

这行代码的意思是:

如果当前文件夹没有 chapter06_visual_data.csv,代码就自动创建一份教学用模拟数据。

这样做是为了降低新手门槛。

你不用手动准备数据,复制代码就能运行。


6. 构造峰、平、谷、尖峰时段

if0 <= hour <= 6:    period_type = "谷"    price = 0.35elif7 <= hour <= 10:    period_type = "平"    price = 0.65elif11 <= hour <= 17:    period_type = "峰"    price = 0.95elif18 <= hour <= 21:    period_type = "尖峰"    price = 1.20else:    period_type = "平"    price = 0.65

这段代码模拟分时电价。

夜间是谷段,价格较低。

白天是峰段,价格较高。

晚间是尖峰,价格最高。


7. 检查必要字段是否存在

required_columns = ["datetime","region","load_mw","price_yuan_kwh","period_type",]for column in required_columns:if column notin df.columns:raise ValueError(f"CSV 文件中缺少必要字段:{column}")

这段代码用于检查 CSV 文件是否包含本章需要的字段。

如果读者手动修改了 CSV 表头,比如把 load_mw 改成 load,程序会主动提示缺少哪个字段。

这样比直接出现 KeyError 更适合新手理解。

小白阶段建议先不要改字段名,先完整跑通示例代码。


8. 转换时间和数字字段

df["datetime"] = pd.to_datetime(df["datetime"], errors="coerce")df["load_mw"] = pd.to_numeric(df["load_mw"], errors="coerce")df["price_yuan_kwh"] = pd.to_numeric(df["price_yuan_kwh"], errors="coerce")

这几行代码分别做三件事:

把 datetime 转成 Python 可以识别的时间。

把 load_mw 转成数字。

把 price_yuan_kwh 转成数字。

为什么要这样做?

因为 CSV 文件中的内容看起来像数字,但实际可能被当成文本。

如果读者手动把负荷写成:

500MW约500

或者把电价写成:

0.65元约0.65

后面画图和计算就可能出错。

所以代码会先进行转换,并检查是否存在无法转换的内容。


9. 基础数据检查

print("\n数据行数:", len(df))print("\n缺失值检查:")print(df.isna().sum())print("\n地区列表:")print(df["region"].unique())print("\n时段类型列表:")print(df["period_type"].unique())

这几行代码是在画图之前做基础检查。

这样做是为了延续第4章的数据清洗习惯:

先检查数据。

再画图。

不要一拿到数据就直接画图。

因为如果数据缺失、重复、字段错误,图表也会跟着错。

本章教学样本预期有:

24 小时 × 2 个示例地区 = 48 行

所以代码中增加了:

expected_rows = 24 * 2if len(df) != expected_rows:    print(f"\n提醒:当前数据行数为 {len(df)},教学样本预期为 {expected_rows} 行,请检查是否缺失或重复。")

这可以提醒读者关注数据完整性。


10. 按地区记录数检查

region_record_count = df.groupby("region").size()print(region_record_count)for region_name, record_count in region_record_count.items():if record_count != 24:        print(f"提醒:{region_name} 当前记录数为 {record_count},教学样本预期为 24 条。")

这段代码会检查每个地区分别有多少条记录。

本章每个示例地区应该都有 24 条小时级记录。

如果某个地区少于 24 条,说明可能存在缺失。

如果某个地区多于 24 条,说明可能存在重复或额外数据。

这一步是为了帮助读者理解:

做可视化之前,也要检查样本是否完整。


11. 为图表准备英文标签

region_map = {"华北示例区""North Example","华东示例区""East Example"}period_map = {"谷""Valley","平""Flat","峰""Peak","尖峰""Critical Peak"}

很多新手运行 Matplotlib 时会遇到中文乱码。

比如中文标题变成方框。

中文图例显示不出来。

为了减少这类问题,本章静态图表尽量使用英文标签。

原始数据里仍然保留中文字段和中文地区名。

但画图时使用英文展示标签。

这样既保留了电力业务含义,也降低了新手报错概率。


12. 选择目标地区

target_region = "华北示例区"region_df = df[df["region"] == target_region].copy()if region_df.empty:raise ValueError(f"未找到目标地区:{target_region},请检查 region 字段。")

这段代码表示:

本章先选择一个地区作为单地区图表的分析对象。

默认选择:

华北示例区

如果你想改成华东示例区,可以把代码改成:

target_region = "华东示例区"

如果目标地区不存在,程序会主动提示。

这样可以避免后面画图时因为数据为空而报错。


13. 画负荷趋势图

plt.plot(    region_df["hour"],    region_df["load_mw"],    marker="o",    label="Load")

这段代码表示:

横轴是小时。

纵轴是负荷。

每个数据点用圆点标出来。

label="Load" 是图例名称。

后面的:

plt.title("Daily Load Trend")plt.xlabel("Hour")plt.ylabel("Load (MW)")plt.grid(True, linestyle="--", alpha=0.5)plt.legend()

分别表示:

添加标题。

添加横轴名称。

添加纵轴名称。

添加网格线。

添加图例。

这些操作会让图表更适合放进报告。

最后:

plt.savefig(load_chart_file, dpi=150)plt.close()

表示:

保存图片。

关闭图表对象。

本章不使用 plt.show() 强制弹窗,是为了避免新手遇到连续弹窗或程序卡住的问题。


14. 画电价走势图

plt.plot(    region_df["hour"],    region_df["price_yuan_kwh"],    marker="o",    label="Price")

这段代码画的是电价曲线。

横轴仍然是小时。纵轴是电价。单位是元/kWh。

电价走势图适合看:

低价时段。高价时段。价格是否呈现明显分时差异。


15. 画地区负荷对比图

for region_name in df["region_en"].unique():    temp_df = df[df["region_en"] == region_name]    plt.plot(        temp_df["hour"],        temp_df["load_mw"],        marker="o",        label=region_name    )

这段代码的意思是:

把每个地区的数据分别取出来。

然后各画一条负荷曲线。

最后放在同一张图里。

这样就能直观对比不同地区的负荷水平和变化趋势。


16. 画分时电价对比图

period_price = region_df.groupby("period_type_en").agg(    avg_price=("price_yuan_kwh""mean")).reset_index()

这段代码先按时段类型分组。

然后计算每类时段的平均电价。

比如:

谷段平均电价。

平段平均电价。

峰段平均电价。

尖峰平均电价。

然后用:

plt.bar(    period_price["period_type_en"],    period_price["avg_price"],    label="Average Price")

画成柱状图。

柱状图适合做类别对比。

在这里,它比折线图更适合展示谷、平、峰、尖峰之间的价格差异。


17. 画负荷和电价组合图

fig, ax1 = plt.subplots(figsize=(105))

这行代码创建了一张图。

然后:

ax1.plot(region_df["hour"], region_df["load_mw"])

画负荷。

再用:

ax2 = ax1.twinx()ax2.plot(region_df["hour"], region_df["price_yuan_kwh"])

创建第二个纵轴,用来画电价。

为什么要两个纵轴?

因为负荷单位是 MW。

电价单位是元/kWh。

两个指标单位不一样,数值量级也不一样。

如果硬放在同一个纵轴上,会很难看清。

所以使用双轴图。

但要特别注意:

双轴图只能辅助观察趋势同步性。不能直接比较两条线的高度。更不能用它证明负荷和电价存在因果关系。真实市场价格还会受到交易规则、供需结构、机组报价、新能源出力、输电约束和结算机制等因素影响。


18. 生成交互式电价图

fig_interactive = px.line(    region_df,    x="datetime",    y="price_yuan_kwh",    markers=True,    title="Interactive Daily Price Trend",    labels={"datetime""Datetime","price_yuan_kwh""Price (Yuan/kWh)"    },    hover_data=["period_type""load_mw"])

这段代码使用 Plotly 生成交互式折线图。

它的好处是:

鼠标移动到数据点上,可以看到具体信息。可以放大某段时间。可以拖动查看不同区域。

最后:

fig_interactive.write_html(interactive_file)

会把图表保存成 HTML 文件。

用浏览器打开即可查看。

九、运行结果说明

运行代码后,会生成 8 个文件。


1. 示例数据文件

chapter06_visual_data.csv

这是本章自动生成的教学用模拟数据。

包含两个示例地区一天 24 小时的负荷、电价和时段类型。


2. 负荷趋势图

chart01_daily_load_trend.png

用途:

观察单个地区一天内负荷变化。

你可以从图中看出:

夜间负荷较低。

白天负荷上升。

晚高峰负荷较高。


3. 电价走势图

chart02_daily_price_trend.png

用途:

观察一天内电价变化。

你可以从图中看出:

谷段电价较低。

峰段电价较高。

尖峰时段电价最高。


4. 地区负荷对比图

chart03_regional_load_comparison.png

用途:

比较两个示例地区的负荷变化。

你可以用它观察:

哪个地区整体负荷更高。

两个地区高峰时段是否一致。

负荷曲线形态是否相似。


5. 分时电价对比图

chart04_tou_price_comparison.png

用途:

比较谷、平、峰、尖峰时段的平均电价。

这张图适合用于讲解分时电价展示方法。

但真实峰、平、谷、尖峰时段和价格,需要以当地最新政策、公告或合同结算口径为准。


6. 负荷与电价组合图

chart05_load_price_combined.png

用途:

同时观察负荷与电价变化。

需要注意:

负荷和电价单位不同,所以这张图使用双纵轴。

看图时应关注趋势,不要直接把两条线的高度放在一起比较。

也不要根据这张图直接判断因果关系。


7. 交互式电价图

interactive_price_chart.html

用途:

用浏览器打开后,可以拖动、缩放、悬停查看数据。

适合做内部分析、培训演示或自用数据探索。


8. 图表说明报告

chapter06_visual_report.txt

用途:

自动说明本章生成了哪些图,每张图适合看什么问题,并附带风险提示。

这一步的意义是:

不只是生成图片,而是让图表进入“报告表达”。


9. 文件保存位置

本章所有文件都会生成在当前 Python 文件所在文件夹中。

也就是和这个文件放在一起:

chapter06_power_visual_report.py

你应该能在同一个文件夹中看到:

chapter06_visual_data.csvchart01_daily_load_trend.pngchart02_daily_price_trend.pngchart03_regional_load_comparison.pngchart04_tou_price_comparison.pngchart05_load_price_combined.pnginteractive_price_chart.htmlchapter06_visual_report.txt

十、本章小练习

练习 1:修改尖峰电价

把代码中的:

price = 1.20

改成:

price = 1.50

重新运行代码。

观察分时电价对比图是否发生变化。


练习 2:修改晚高峰负荷

把华北示例区晚高峰负荷:

load_north = 880

改成:

load_north = 1000

重新运行代码。

观察负荷趋势图和地区负荷对比图是否变化。


练习 3:切换分析地区

把代码中的:

target_region = "华北示例区"

改成:

target_region = "华东示例区"

重新运行代码。

观察单地区负荷趋势图、电价走势图和组合图是否切换到新地区。


练习 4:思考一个业务问题

如果一个用户的负荷高峰和电价高峰高度重合,你会进一步分析什么?

可以从这些角度思考:

是否可以调整生产班次?

是否可以做需求响应?

是否存在削峰空间?

是否有储能配置价值?

是否需要结合 15 分钟负荷数据进一步判断?

是否需要核验电价类型和结算规则?

十一、本章小结

本章我们完成了从“数据表”到“图表报告”的入门练习。

你至少需要记住以下几点:

第一,电力交易数据具有强时间性,非常适合画趋势图。

第二,负荷趋势图可以帮助观察用电节奏。

第三,电价走势图可以帮助观察价格变化。

第四,地区负荷对比图可以帮助观察不同区域或不同用户之间的曲线差异。

第五,分时电价对比图可以帮助观察谷、平、峰、尖峰价格差异。

第六,交互式图表适合内部分析、培训演示和数据探索。

第七,双轴图只能辅助观察趋势,不能直接证明因果关系。

第八,图表不是结论,真实业务判断还需要规则、合同、结算口径和人工复核。

这章看起来是在讲画图。

但真正想让你建立的是一种表达能力:

把电力交易数据从“表格里的数字”,变成别人一眼能看懂的图表和报告。

这就是数据分析从“自己看懂”走向“别人也看懂”的关键一步。

十二、资料领取与评论互动

如果你已经成功运行本章代码,并在文件夹中看到了 PNG 图表和 HTML 交互式图表,欢迎在评论区回复:

可视化报告已跑通

如果你想直接领取本章配套资料,可以私信公众号关键词:

电力Python06

领取《Python电力交易》第6章可视化资料包,包括:

  1. chapter06_power_visual_report.py 完整代码
  2. chapter06_visual_data.csv 教学用模拟数据
  3. 负荷趋势图示例
  4. 电价走势图示例
  5. 地区负荷对比图示例
  6. 分时电价对比图示例
  7. 负荷与电价组合图示例
  8. interactive_price_chart.html 交互式电价图
  9. chapter06_visual_report.txt 图表说明报告
  10. 电力交易常用图表模板说明
  11. 电力数据可视化检查清单
  12. 第6章运行说明

建议使用顺序:

先看运行说明 → 跑通完整代码 → 打开生成的PNG图片 → 查看交互式HTML图表 → 对照检查清单理解图表风险 → 尝试替换成自己的合规数据。

也欢迎你在评论区回答一个问题:

你最想优先用 Python 画哪类电力数据图表?

A. 用户负荷曲线

B. 工商业分时电价图

C. 现货电价走势图

D. 日前与实时价格对比图

E. 储能充放电曲线

F. 月度电费分析图

G. 多省电价对比图

*本章全部数据均为教学用模拟数据,仅用于演示 Python 可视化方法,不代表任何真实地区、真实用户、真实电价或真实交易规则。 图表只能辅助观察数据现象,不构成交易建议、售电报价建议、储能收益测算依据或经营决策依据。

点击阅读往期系列文章:

负荷、电量、电价到底怎么算?用 Python 跑通一遍核心指标
拿到电价数据先别急着算:用 Python 做一遍数据清洗
从电价表到趋势图:电力新人也能跑通的Python入门案例
电力交易入门:先懂“规矩”,再学“工具”
为什么电力交易从业者,迟早要学一点 Python?

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 04:01:00 HTTP/2.0 GET : https://f.mffb.com.cn/a/502225.html
  2. 运行时间 : 0.121679s [ 吞吐率:8.22req/s ] 内存消耗:4,726.65kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=b7ecf77c2c718480b692ff5d61fb7f38
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000751s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000812s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000374s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000298s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000476s ]
  6. SELECT * FROM `set` [ RunTime:0.000228s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000511s ]
  8. SELECT * FROM `article` WHERE `id` = 502225 LIMIT 1 [ RunTime:0.000740s ]
  9. UPDATE `article` SET `lasttime` = 1783022460 WHERE `id` = 502225 [ RunTime:0.020575s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000378s ]
  11. SELECT * FROM `article` WHERE `id` < 502225 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000558s ]
  12. SELECT * FROM `article` WHERE `id` > 502225 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.004301s ]
  13. SELECT * FROM `article` WHERE `id` < 502225 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.002213s ]
  14. SELECT * FROM `article` WHERE `id` < 502225 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.004417s ]
  15. SELECT * FROM `article` WHERE `id` < 502225 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.011902s ]
0.123303s