如何计算电动汽车充电桩数据中的充电会话数及平均充电量?
解决方案
1. 生成充电会话分组标识
先给每一段连续的充电/非充电状态分配唯一分组ID,用shift()和cumsum()实现:
evdata['session_id'] = (evdata['Charging?'] != evdata['Charging?'].shift()).cumsum()
2. 提取每个充电会话的总充电量
筛选出充电状态(Charging?=1)的数据,按session_id分组后取Cumulative Energy (kWh)的最大值——这就是该会话的总充电量(因为充电过程中累计电量持续增加,直到结束重置为0):
charging_sessions = evdata[evdata['Charging?'] == 1].groupby('session_id')['Cumulative Energy (kWh)'].max().reset_index()
3. 计算目标指标
从处理后的结果中直接统计总会话数和平均充电量:
# 总充电会话数 total_sessions = len(charging_sessions) # 每次会话平均充电量 avg_charge_per_session = charging_sessions['Cumulative Energy (kWh)'].mean() print(f"总充电会话数: {total_sessions}") print(f"每次会话平均充电量: {avg_charge_per_session:.2f} kWh")
完整代码示例
import pandas as pd # 假设数据已加载到evdata DataFrame中 # evdata = pd.read_csv('your_dataset.csv') # 生成会话ID evdata['session_id'] = (evdata['Charging?'] != evdata['Charging?'].shift()).cumsum() # 提取充电会话的总充电量 charging_sessions = evdata[evdata['Charging?'] == 1].groupby('session_id')['Cumulative Energy (kWh)'].max().reset_index() # 计算并输出结果 total_sessions = len(charging_sessions) avg_charge = charging_sessions['Cumulative Energy (kWh)'].mean() print(f"总充电会话数: {total_sessions}") print(f"平均每次充电量: {avg_charge:.2f} kWh")
内容的提问来源于stack exchange,提问作者frenkiedejong
相关产品推荐
相关产品推荐

