比赛目标
electricity price.csv 文件中存放了2021年12月1日到2024年4月18日的电力市场的市场出清价格(clearing price)和市场需求(demand)。
训练集范围为2021年12月1日到2023年7月1日,共计55392个点;测试集范围为2023年7月1日到2024年4月18日,共计28228个点。
unit.csv 文件中存放了市场供给者的参数信息。
我们的任务就是根据市场预测出测试集的出清价格。
评价指标如下:
ABM(Agent-Based-Modeling)
通过模拟个体(Agent)的行为和相互作用来研究整体的动态变化。
1.导入库
import numpy as np
import pandas as pd
from pathlib import Path
from sklearn.linear_model import LinearRegression
2.预处理
读取数据,把两个文件中的内容读取到两个变量中,即electricity_price和unit
base_path = Path("data") # 确保数据都放在同级的data目录下
# 读取市场数据
electricity_price = pd.read_csv(base_path / "electricity price.csv")
# 读取市场主体(各发电机组)数据
unit = pd.read_csv(base_path / "unit.csv")
我们最终要提交的是测试集的出清价格,把它保存到submit.csv文件中,格式如下
准备提交示例文件,筛选出源文件electricity_price中的测试集,然后把demand列删去,就可以得到上面的submit.csv提交格式。
"""
准备示例提交数据sample_submit
1. electricity_price["clearing price (CNY/MWh)"].isna()找到出清价格为缺失值的行,即要预测的目标
2. 去除demand列,符合最后的提交格式
"""
sample_submit = electricity_price[electricity_price["clearing price (CNY/MWh)"].isna()].drop(columns="demand")
sample_submit.to_csv(base_path / "sample_submit.csv", index=False)
因为源文件中测试集2023年7月1日到2024年4月18日的出清价格为空,所以可以用pd.DataFrame.isna()方法,检查DataFrame中的缺失值(NaN),返回一个布尔值的DataFrame,其中True表示缺失值。electricity_price[electricity_price["clearing price (CNY/MWh)"].isna()],True的位置数据被保留,False的数据会被过滤,即获取electricity_price中的测试集。
再使用pd.DataFrame.drop()删除DataFrame中的指定列或行。这里就是.drop(columns="demand")把demand列删除。