算实际功率与预测功率的差值除以预测功率得到的值为A,计算实际功率与预测功率的差值的绝对值再除以4得到的值为ec,然后在大发时段如果A大于0.25,那么ec乘以0.4得到一个新值ec_a, 在大发时段如果A小于-0.25,那么elc乘以0.2得到一个新值ec_b,,在大发时段,如果在-0.25和0.25之间,那么ec乘以0得到一个新值ec_c,在高峰时段如果A小于-0.25,那么ec乘以0.4得到一个新值ec_d,在高峰时段如果A大于0.25,那么ec乘以0.2得到一个新值ec_e,在高峰时段,如果在-0.
时间: 2024-04-01 16:36:34 浏览: 98
实际值与预测值效果评价函数.m
.25和0.25之间,那么ec乘以0得到一个新值ec_f, 其他时间段ec_a, ec_b, ec_c, ec_d, ec_e, ec_f都等于ec。最后将所有时段内ec的值求平均,得到一个统计值,输出这个统计值。
可以按照以下方法进行实现:
1. 使用pandas库读取excel文件,将数据存储为一个DataFrame对象。
```python
import pandas as pd
data = pd.read_excel('data.xlsx', header=None, names=['date', 'actual_power', 'predicted_power'])
```
2. 将日期数据转换为datetime类型,并添加一列表示时间段。
```python
data['date'] = pd.to_datetime(data['date'])
data['time_period'] = pd.cut(data['date'].dt.hour,
bins=[0, 6, 9, 10, 16, 17, 22, 24],
labels=['普通时段', '高峰时段', '普通时段', '大发时段', '普通时段', '大发时段', '普通时段'])
```
3. 计算A和ec,并按要求进行调整。
```python
data['A'] = (data['actual_power'] - data['predicted_power']) / data['predicted_power']
data['ec'] = abs(data['actual_power'] - data['predicted_power']) / 4
def adjust_ec(row):
ec = row['ec']
A = row['A']
time_period = row['time_period']
if time_period == '大发时段':
if A > 0.25:
ec_a = ec * 0.4
ec_b = 0
ec_c = 0
elif A < -0.25:
ec_a = 0
ec_b = ec * 0.2
ec_c = 0
else:
ec_a = ec
ec_b = 0
ec_c = 0
ec_d = ec_e = ec_f = 0
elif time_period == '高峰时段':
if A < -0.25:
ec_d = ec * 0.4
ec_e = 0
ec_f = 0
elif A > 0.25:
ec_d = 0
ec_e = ec * 0.2
ec_f = 0
else:
ec_d = 0
ec_e = 0
ec_f = 0
ec_a = ec_b = ec_c = 0
else:
ec_a = ec_b = ec_c = ec_d = ec_e = ec_f = ec
return ec_a + ec_b + ec_c + ec_d + ec_e + ec_f
data['ec_a'] = data.apply(adjust_ec, axis=1)
```
4. 按时间段求平均值并输出。
```python
result = data.groupby('time_period')['ec_a'].mean()
print(result)
```
阅读全文