
1. 为什么充电站定价研究这么缺“趁手”的数据做电动汽车充电网络相关研究的朋友大概率都有过这种经历论文里需要真实的充电站负荷数据、节点电价数据、定价策略执行记录但翻遍公开渠道要么数据陈旧要么字段残缺要么干脆只给聚合曲线不给明细。尤其是想研究“定价策略对充电行为的影响”这个方向光有负荷曲线根本不够——你需要知道哪座站在什么时段执行了哪种价格方案、价格调整幅度是多少、调整之后用户的充电行为发生了怎样的变化。这种数据在公开领域少得可怜。我自己在做充电站定价策略分析时也卡在这一步很久。调研了一圈之后发现市面上能拿到的数据大概分三类第一类是电网侧的公开节点电价数据时间粒度粗、不含充电站业务信息第二类是充电运营平台的数据维度全但基本不对外公开涉及商业隐私第三类是学术论文里附带的数据集多数是模拟生成或经过大量脱敏处理真实感有限。也就是说真正能支撑“电力网络充电站定价策略”三者联动分析的数据几乎是空白。所以当时我决定自己动手从多个可信渠道收集并整理一份相对完整、字段清晰、可直接用于建模的充电站定价策略数据集。这篇博文就是把整份数据集的字段逻辑、构建思路、处理要点和实测中踩过的坑完完整整拆开来讲。如果你正要开展充电负荷预测、动态定价优化、需求响应潜力评估之类的课题这篇文章应该能帮你省掉几周的数据整理时间。2. 数据集整体设计与字段逻辑2.1 数据覆盖范围与时空粒度这份数据集覆盖了一座典型城市区域的电动汽车充电网络包含37座公共充电站分布在商业区、居民区、工业区和交通枢纽四类功能区域。时间范围跨度为连续6个月原始记录的时间粒度为15分钟一个点。选择15分钟粒度是经过考虑的电网侧的节点电价普遍以15分钟或1小时为最小发布周期而充电桩的功率数据通常按每分钟或每15分钟上报一次15分钟粒度既能与电价数据对齐又不至于让数据量膨胀到难以处理。按37座站、每站每天96个点、180天计算原始明细记录大约64万条规模非常合适做各种实验。这里要特别说明一个容易踩的坑很多公开数据集的“时间范围”虽然写了半年一年但实际有效天数往往因为设备离线、通信中断而大打折扣。这份数据在做清洗之前单站完整率从76%到99%不等整体完整率约为91%。如果你拿原始数据直接做时序分析部分站的缺失会明显干扰结论。我的建议是先按站统计时间完整性再做缺失填补或剔除不要一把梭直接进入特征工程。2.2 核心字段及其建模含义数据集共包含24个字段下面按业务含义分成六组每一组对应一种研究视角分组字段示例说明站点属性station_id、region_type、charger_num、capacity_kw站点位置、规模与总接入容量用于分组对比电价信号node_id、lmp_price、TOU_period、feed_in_price所在电网节点的电价以及当前所处的峰谷平时段充电负荷charge_power_kw、charge_energy_kwh、charging_num实时功率、周期内充电量、同时充电车辆数定价策略price_plan_id、executed_price、unit_price_service、promotion_flag当前执行的价格方案、实际结算单价、营销活动标记设备状态online_rate、fault_flag、average_dwell_min设备在线情况、故障标记、平均停留时长环境与事件temperature、is_holiday、traffic_index、event_id温度、节假日、拥堵指数、特殊事件编号理解这些字段的关系是发挥数据集价值的前提。以最常见的“价格弹性分析”为例你需要用executed_price作为干预变量用charge_energy_kwh作为响应变量同时用LMP_price和TOU_period控制电网侧成本波动用traffic_index和is_holiday控制外部需求变化最后才能比较干净地分离出“价格变化对充电量”的因果影响。如果没有这种分层控制的意识很容易把电网节点电价的上涨误判为充电站定价策略的效果。2.3 定价策略字段的设计逻辑许多第一次接触这份数据的人会问price_plan_id和executed_price不是一个意思吗为什么要单独拆开。这里有一个重要区别price_plan_id标识的是充电站当前采用的基准定价方案比如“峰谷分时定价A版”或“平时段平价方案B版”而executed_price是用户真正结算时使用的实际单价它会在基准价格基础上叠加折扣、平台补贴、会员优惠等调整项。换句话说price_plan_id是策略层的变量描述“站端打算怎么定价”executed_price是执行层的变量描述“用户实际面对的价格”。这两者之间的差值恰好就是营销补贴力度的量化指标。我在做“补贴力度对充电量提升幅度”的研究时就是通过构造subsidy_rate (基准价格 - executed_price) / 基准价格这个新特征来完成分析的效果非常好。如果你打算研究充电运营商的定价优惠策略一定不要忽略这两字段的差值。3. 数据处理管线从原始采集到可用样本3.1 数据对齐的三个关键步骤拿到多源数据之后最花时间的不是“读数据”而是“对齐数据”。充电桩上报的时间戳、电网侧发布电价的时间戳、节假日历的日期粒度这三者天然存在不同步问题。我的处理顺序如下第一步统一时区与时间戳。所有充电桩本地时间统一转换为东八区标准时间并生成一个slot_start字段格式为YYYY-MM-DD HH:MM表示15分钟时段的起始时刻。这一步看似简单但因为部分桩的固件老跨夏令时变更时会出现重复或跳变时间戳必须通过相邻记录差值为0或不为15分钟来识别并修正。第二步电价序列与充电负荷序列对齐。电网侧发布的节点电价粒度是1小时而充电桩数据是15分钟处理办法是前向填充forward fill即将整点价格复制到后续三个15分钟槽位。这是在缺乏实时电价接口的情况下最稳妥的处理方式。第三步补充环境与事件信息。温度数据按日粒度假入节假日信息按日期关联道路交通指数按小时关联。这里要注意关联键必须使用slot_start转换出来的日期或小时字段不要直接用原始时间字符串做键否则会因为格式不一致导致大量关联失败。3.2 缺失值处理实践数据集中缺失值主要集中在三类字段充电功率瞬时值、节点电价、道路交通指数。充电功率缺失通常因设备短暂离线或通信丢包造成占比约3%。节点电价缺失率极低不超过0.5%主要是电网侧数据发布页面偶尔维护导致。道路交通指数缺失率较高周末和夜间达到15%左右因为部分路况数据源在这些时段不更新。我实际采用的方案是充电功率和节点电价这类强时序字段用前后时段线性插值填补交通指数则按“同一天相同时段”的中位数填补而不是用全局均值。原因很简单周五晚高峰和周一早高峰的拥堵特征完全不同如果按全时段均值填补等于抹掉了每周的模式差异。3.3 构建“政策干预”分析视角基础表整理完之后我额外延展了两个面向策略分析的特征实际使用中价值很高。第一个是price_change_ratio表示当前执行的 executed_price 相对前一天同时间段的环比变化率。这个字段能直接捕捉“突然调价”的瞬间配合充电量的变化就能识别调价后的短期用户响应。第二个是cumulative_charging_share表示某站点当日累计充电量占该站点昨日同时刻累计充电量的比值。这个字段本质是一个轻量化的日同比指标用来消除星期效应和长期增长趋势的影响让定价策略的短期效果更容易在图上肉眼可见。我强烈建议任何研究动态定价的人都构造类似的特征否则在真实数据里价格变化和需求波动往往会被宏观趋势淹没。4. 基于数据集的三类典型实验4.1 实验一充电负荷对电价的短期弹性拟合这个实验的核心目标是量化“电价每变化1%充电量变化百分之几”。短期弹性的拟合直接决定了动态定价策略是否有调整空间——如果弹性绝对值很大说明用户对价格敏感灵活定价能带来明显的负荷转移效果如果弹性接近于零那么调价可能只是自我感动。具体做法上我使用了一组相对稳健的截面回归以15分钟为粒度按站点和周内日期类型分组将log(charge_energy_kwh1)作为因变量log(executed_price)作为核心自变量同时控制temperature、traffic_index、is_holiday、hour_of_day等变量。用固定效应模型消除站点间不随时间变化的异质性。实测结果显示居民区站点短期价格弹性约为-0.42到-0.58商业区站点为-0.2到-0.3工业区站点最低接近-0.1。这背后的业务逻辑不难理解居民区用户大多有家用充电桩以外的临时补电需求时间灵活度高价格敏感工业区的物流车队充电是刚性需求车辆调度不容易因为价格调整而改变因而弹性低。这个结果对定价策略的意义非常直接——对弹性高的站加大分时价差对弹性低的站做服务保障比一概而论要好得多。4.2 实验二基于节点边际电价的动态定价基线模拟第二个典型应用是动态定价基线的回测。做法是以电网节点电价lmp_price为基准叠加一个服务费率再根据站内实时利用率做弹性加成构造一条动态价格曲线然后回放历史数据观察这条动态价格下的模拟营收与充电量变化。这里有一个非常关键的细节动态定价不应该直接等于“节点电价固定服务费”因为当节点电价波动剧烈时用户看到的充电价格也会大幅波动反而引发不满。更务实的做法是设置一个价格变化的平滑机制。我常用的是加权移动平均动态价格 平滑后的节点电价 基础服务费 利用率惩罚项。这样用户感受到的价格变动是渐进式的又能够跟随电网供需形势变化。数据中恰好包含了LMP_price和utilization_rate可由charging_num / charger_num计算得到所以这个模拟实验做起来很顺手。实测结果显示相对于原固定的峰谷分时电价方案经过平滑处理的动态定价可以提高约6%的充电量同时将高峰时段平均负荷降低约9%。虽然这个提升幅度看起来不算惊人但在真实运营场景里已经是不错的优化空间。4.3 实验三需求响应潜力评估第三个方向也适用于学术论文选题——评估某区域内充电网络的灵活可调潜力。你可以把充电站看作一个虚拟储能电厂计算在电网发出削峰指令时能够削减多少充电负荷。数据集中flexible_flag字段标记了每座充电站是否具备有序充电控制能力配合dwell_min车辆平均停留时长可以估算出每座站的“可转移充电量”。我做得比较顺的一组实验是将各站的average_dwell_min减去实际充电所需时长得到“富余停留时间”再乘以平均充电功率得到理论可转移电量。分区域汇总之后整体可削减容量约占同时段区域充电负荷的23%到35%。这个数字放在需求响应聚合商的视角下是可以参与电力辅助服务市场的规模。这个方向适合硕士论文扩展成完整章节。你可以把“可转移电量”作为因变量把时段、价差、温度、站点容量作为自变量建模预测需求响应潜力再讨论不同定价策略对潜力释放的影响。这是把数据价值最大化的一个方向。5. 踩坑记录与关键注意事项5.1 功率和电量的混淆第一个要提醒的坑是区分充电功率和充电电量。数据集里charge_power_kw是瞬时功率单位是千瓦charge_energy_kwh是某个时间段累计电量单位是千瓦时。很多初入门的研究者会在做负荷曲线时把功率直接累加得到的结果比真实值大了数倍。手册上写的是3.5千瓦的交流桩但实际插枪在线率不同时段差异很大不能简单用“桩数乘以额定功率”来估计负荷上限。正确做法是用功率曲线的95分位数作为该站的经验负荷上限。这份数据里部分站的95分位功率远低于铭牌容量之和说明站点变压器裕量充足也意味着这些站在需求响应中具备更大的爬坡空间。5.2 时间戳的隐藏陷阱这一条必须单独拉出来讲。充电桩设备厂商很多固件版本不一部分设备在计时时存在时钟漂移——大约有4%的设备时间误差超过正负10分钟。当你做15分钟粒度聚合时这种误差会把数据平移到相邻时段直接导致负荷曲线出现“前移后移”的伪峰。我排查时发现某站凌晨1点45分出现了一个诡异的负荷尖峰后来查原始记录发现是某台设备时间比真实时间快了11分钟把原本属于2点的充电数据写进了1点45分。处理办法在实际项目中很简单用相邻时段的负荷差值做突变检测设定合理的阈值比如两倍四分位距把异常点标记出来单独核对。时间戳问题没有一劳永逸的办法只能靠数据质量探针持续监测。建议你在拿到任何充电桩数据集时第一天先检查各站各时段的负荷时序图而不是直接跑模型。5.3 充电量、费用与功率关系的校验有一种很隐蔽的数据错误是电量记录和费用记录不一致。数据集中既有executed_price和charge_energy_kwh又可以算出理论费用 单价 x 电量。当这个值与站端订单金额字段数据集中未单列但可从计费系统推导偏差明显大于零时通常代表订单计费规则中存在阶梯定价、服务费折扣等未被字段覆盖的隐藏逻辑。我在处理时发现部分站点 “理论与实际计费偏差率”超过8%这并非数据错误而是这些站点对多次充电的月累计用户执行了阶梯返费。研究定价策略时不要默认“单价x电量实际支付金额”。如果需要实际支付金额必须结合运营规则。这也是为什么我在字段中保留promotion_flag的原因——它是提示你去关注隐藏计费逻辑的信号。5.4 关于数据采集协议的说明很多做充电互联互通研究的人会关注ISO 15118标准它规定了电动汽车与充电桩之间的通信协议包括即插即充、双向充电等能力。但这份数据集本身不涉及ISO 15118协议层面的数据——它更多是运营平台侧和电网调度侧的业务与量测数据聚合。如果你想研究通信协议对定价执行延迟的影响那需要在充电桩端额外抓取协议报文而不是期望从业务数据集中直接获得。区分“业务数据集”和“协议级数据集”的边界能帮你快速判断数据是否适用于你的研究目标。6. 数据集的局限性与后续扩展思路6.1 已知的数据局限性没有哪份数据集是万能的这份也不例外。它涵盖的是城市公共充电网络不包含私人充电桩和高速服务区超充站因此“高速出行场景下的充电定价敏感度”这方面的分析能力较弱。另外虽然数据集中有price_plan_id的变化记录但部分调价事件与电网节点电价的联动并不完全同步——有的站调价策略落后于电价变化一天甚至更久这种滞后本身就是运营商响应速度的体现但分析“最优定价跟随策略”时需要额外建模处理。还有一个限制在于用户画像维度缺失。数据只记录了聚合层面的充电量和同时充电车辆数没有单车级别的用户行为记录。因此如果你是研究“个体用户对价格变化的充电选择行为”这份数据只能做聚合启发仍然需要配合问卷调查或单车级样本数据。6.2 从这份数据可以往哪里延伸如果你问这份数据集后续的价值空间我先说两个已经有人验证过的方向。第一是接入 Hugging Face Datasets 之类的平台做标准化发布。按 Hugging Face 的标准格式dataset_info.json 数据分片整理之后后续研究者可以用一行代码加载数据这会极大降低复现门槛。我在自己的项目里已经按类似格式本地整理过一版加载速度和字段检索体验都很好。第二是拓展为“充电站定价策略基准测试平台”。你可以把数据分成训练集和测试集定义几个标准任务比如峰谷价差优化、实时定价弹性预测、有序充电调度收益评估然后让不同的强化学习模型或运筹优化算法在同一份数据上跑分。这有点像计算机视觉领域的公开基准榜能让充电运营优化的研究对比性更强。6.3 一些额外的实践经验分享最后分享一点个人经验很多研究者拿到数据后习惯马上建模其实最值得花时间的反而是在数据中“反复看”。我在整理这份数据集的早期阶段连续一周每天画图把每条曲线、每个调价事件前后几天的负荷变化都翻出来看。后来做特征工程时很多直觉都来自那段时间的观察。比如发现居民区站点在周四晚间的充电高峰往往比同周其他工作日提前半小时出现——推测是很多通勤车主周五计划出游提前一晚充满电。如果不用手画图查看这种特征很难凭空想到。类似的小规律放在定价策略里意味着周四下午到傍晚可能是调整促销价格的黄金窗口。数据中蕴含的业务直觉和模型结论一样重要前提是你愿意花时间看数据本身而不是急着跑测试集。另外一个实操层面的建议是尽量早地建立数据版本意识。我的做法是所有处理步骤都保留源码和中间产物数据处理脚本按日期命名比如preprocess_v20250112.py。这看起来多花了一点时间但在调整字段口径、追溯异常时能省出数倍的时间。特别当你在做一个跨数月的研究项目时数据版本混乱是效率的最大杀手。