一.代码流程(运行效果:短期光伏发电量短期预测(Python代码,先对异常值处理,再基于XGBoost模型预测)_哔哩哔哩_bilibili
模型流程:
-
导入所需的库,包括NumPy、Pandas、Matplotlib、Seaborn等。
-
读取发电数据和天气传感器数据,将它们存储在
df_plt1_gen
和df_plt1_weather
中。 -
数据预处理:
- 对发电数据进行了一些处理,包括删除不需要的列、将日期时间列转换为日期时间类型,并根据逆变器创建了新的逆变器列。
- 天气数据也被处理,删除了不需要的列,将日期时间列转换为日期时间类型。
-
确保数据完整性:
- 创建了一个完整的日期时间序列,以确保数据中没有缺失值。
- 初始化一个空列表,用于存储处理后的发电数据。
-
遍历每个逆变器:
- 选择特定逆变器的数据。
- 使用完整的日期时间序列合并数据,以确保没有缺失值。
- 添加逆变器列并将数据附加到列表中。
-
合并所有逆变器的数据,创建了一个完整的数据集
df
。 -
提取并映射日期时间特征,计算特征之间的相关性,并检查是否有负值。
-
创建一个新的数据集
df_eda
,用于探索性数据分析(EDA)。 -
处理异常值:
- 创建用于统计异常值的数据集,包括低异常值、高异常值和标准差范围内的数据点。
- 绘制散点图可视化数据点。
-
统计低异常值的数量,包括低异常值且AC功率为0的数量。
-
绘制逆变器异常值计数的条形图,包括AC功率为0的部分。
-
定义一个函数
outliers
用于处理异常值,并绘制散点图可视化处理后的数据。 -
处理DAILY_YIELD特征的异常值,包括将夜间时间段的发电功率设为0。
-
插补缺失值:
- 使用KNNImputer插补缺失值。
- 使用时间插值、线性插值和多项式插值方法插补缺失值。
-
计算每天的总发电量,并将目标变量向后移动一天,以便进行预测。
-
使用季节性分解方法对目标变量进行分解,以查看趋势和季节性成分。
-
创建基准模型,计算基准模型的RMSE(均方根误差)。
-
准备数据用于机器学习模型和深度学习模型的训练和测试。
-
使用XGBoost模型进行训练和测试,评估模型的性能,并绘制预测结果。
-
最后,绘制了模型的特征重要性图表。
二.数据集(68779条数据)
这些数据是在印度的两个太阳能发电厂收集的,时间跨度为34天。每对文件包含一个电力发电数据集和一个传感器读数数据集。电力发电数据集是在逆变器级别收集的,每个逆变器都连接着多行太阳能电池板。传感器数据是在发电厂级别收集的,是单个传感器阵列在发电厂中的最佳放置。
DATE_TIME
: 表示日期和时间的时间戳,记录数据采集的具体时间点。PLANT_ID
: 发电厂的唯一标识符,用于区分不同的太阳能发电厂。SOURCE_KEY
: 太阳能发电设备的唯一标识符,用于区分不同的发电设备。DC_POWER
: 直流功率的测量值,表示从太阳能电池板产生的直流电功率。AC_POWER
: 交流功率的测量值,表示从逆变器转换后的交流电功率。DAILY_YIELD
: 每天的发电量,表示在给定日期内生成的总电量。TOTAL_YIELD
: 总发电量,表示从安装以来生成的总电量。
这些列提供了关于太阳能发电厂的重要信息,包括发电设备的功率输出、每天的发电量以及总发电量。通过这些数据,可以进行发电量的分析、设备性能的评估以及故障检测等任务。
开始时间
DATE_TIME | PLANT_ID | SOURCE_KEY | DC_POWER | AC_POWER | DAILY_YIELD | TOTAL_YIELD |
15-05-2020 00:00 | 4135001 | 1BY6WEcLGh8j5v7 | 0 | 0 | 0 | 6259559 |
15-05-2020 00:00 | 4135001 | 1IF53ai7Xc0U56Y | 0 | 0 | 0 | 6183645 |
15-05-2020 00:00 | 4135001 | 3PZuoBAID5Wc2HD | 0 | 0 | 0 | 6987759 |
15-05-2020 00:00 | 4135001 | 7JYdWkrLSPkdwr4 | 0 | 0 | 0 | 7602960 |
15-05-2020 00:00 | 4135001 | McdE0feGgRqW7Ca | 0 | 0 | 0 | 7158964 |
15-05-2020 00:00 | 4135001 | VHMLBKoKgIrUVDU | 0 | 0 | 0 | 7206408 |
15-05-2020 00:00 | 4135001 | WRmjgnKYAwPKWDb | 0 | 0 | 0 | 7028673 |
15-05-2020 00:00 | 4135001 | ZnxXDlPa8U1GXgE | 0 | 0 | 0 | 6522172 |
15-05-2020 00:00 | 4135001 | ZoEaEvLYb1n2sOq | 0 | 0 | 0 | 7098099 |
15-05-2020 00:00 | 4135001 | adLQvlD726eNBSB | 0 | 0 | 0 | 6271355 |
15-05-2020 00:00 | 4135001 | bvBOhCH3iADSZry | 0 | 0 | 0 | 6316803 |
15-05-2020 00:00 | 4135001 | iCRJl6heRkivqQ3 | 0 | 0 | 0 | 7177992 |
15-05-2020 00:00 | 4135001 | ih0vzX44oOqAx2f | 0 | 0 | 0 | 6185184 |
15-05-2020 00:00 | 4135001 | pkci93gMrogZuBj | 0 | 0 | 0 | 7169102 |
15-05-2020 00:00 | 4135001 | rGa61gmuvPhdLxV | 0 | 0 | 0 | 7111493 |
15-05-2020 00:00 | 4135001 | sjndEbLyjtCKgGv | 0 | 0 | 0 | 7016832 |
15-05-2020 00:00 | 4135001 | uHbuxQJl8lW7ozc | 0 | 0 | 0 | 7038681 |
15-05-2020 00:00 | 4135001 | wCURE6d3bPkepu2 | 0 | 0 | 0 | 6782598 |
15-05-2020 00:00 | 4135001 | z9Y9gH1T5YWrNuG | 0 | 0 | 0 | 7007866 |
15-05-2020 00:00 | 4135001 | zBIq5rxdHJRwDNY | 0 | 0 | 0 | 6339380 |
15-05-2020 00:00 | 4135001 | zVJPv84UY57bAof | 0 | 0 | 0 | 7116151 |
15-05-2020 00:15 | 4135001 | 1BY6WEcLGh8j5v7 | 0 | 0 | 0 | 6259559 |
15-05-2020 00:15 | 4135001 | 1IF53ai7Xc0U56Y | 0 | 0 | 0 | 6183645 |
15-05-2020 00:15 | 4135001 | 3PZuoBAID5Wc2HD | 0 | 0 | 0 | 6987759 |
15-05-2020 00:15 | 4135001 | 7JYdWkrLSPkdwr4 | 0 | 0 | 0 | 7602960 |
15-05-2020 00:15 | 4135001 | McdE0feGgRqW7Ca | 0 | 0 | 0 | 7158964 |
15-05-2020 00:15 | 4135001 | VHMLBKoKgIrUVDU | 0 | 0 | 0 | 7206408 |
15-05-2020 00:15 | 4135001 | WRmjgnKYAwPKWDb | 0 | 0 | 0 | 7028673 |
15-05-2020 00:15 | 4135001 | ZnxXDlPa8U1GXgE | 0 | 0 | 0 | 6522172 |
中期时间段数据展示
20-05-2020 06:45 | 4135001 | uHbuxQJl8lW7ozc | 947.875 | 92.0875 | 40.25 | 7071238.25 |
20-05-2020 06:45 | 4135001 | wCURE6d3bPkepu2 | 944.25 | 91.725 | 41.25 | 6815390.25 |
20-05-2020 06:45 | 4135001 | z9Y9gH1T5YWrNuG | 953.875 | 92.6625 | 40.375 | 7040505.375 |
20-05-2020 06:45 | 4135001 | zBIq5rxdHJRwDNY | 936.75 | 91 | 39.625 | 6372010.625 |
20-05-2020 06:45 | 4135001 | zVJPv84UY57bAof | 933.625 | 90.675 | 40.125 | 7148377.125 |
20-05-2020 07:00 | 4135001 | 1BY6WEcLGh8j5v7 | 1564.714286 | 152.9571429 | 68 | 6290165 |
20-05-2020 07:00 | 4135001 | 1IF53ai7Xc0U56Y | 1790.375 | 175.2375 | 76.625 | 6216506.625 |
20-05-2020 07:00 | 4135001 | 3PZuoBAID5Wc2HD | 1728.714286 | 169.1571429 | 73.71428571 | 7020585.714 |
20-05-2020 07:00 | 4135001 | 7JYdWkrLSPkdwr4 | 1690.571429 | 165.4285714 | 74.85714286 | 7635282.857 |
20-05-2020 07:00 | 4135001 | McdE0feGgRqW7Ca | 1628.714286 | 159.2571429 | 71.42857143 | 7192169.429 |
20-05-2020 07:00 | 4135001 | VHMLBKoKgIrUVDU | 1727.428571 | 169.0428571 | 76.57142857 | 7239618.571 |
20-05-2020 07:00 | 4135001 | WRmjgnKYAwPKWDb | 1700 | 166.3571429 | 72.57142857 | 7061004.571 |
20-05-2020 07:00 | 4135001 | YxYtjZvoooNbGkE | 1593.857143 | 155.7857143 | 70 | 7212546 |
20-05-2020 07:00 | 4135001 | ZnxXDlPa8U1GXgE | 1638.428571 | 160.1857143 | 59.57142857 | 6555195.571 |
20-05-2020 07:00 | 4135001 | ZoEaEvLYb1n2sOq | 1567 | 153.1857143 | 69.57142857 | 7130401.571 |
20-05-2020 07:00 | 4135001 | adLQvlD726eNBSB | 1818.125 | 178 | 79.125 | 6304592.125 |
20-05-2020 07:00 | 4135001 | bvBOhCH3iADSZry | 1535.714286 | 150 | 66.85714286 | 6346973.857 |
20-05-2020 07:00 | 4135001 | iCRJl6heRkivqQ3 | 1568.857143 | 153.2857143 | 69.85714286 | 7210787.857 |
20-05-2020 07:00 | 4135001 | ih0vzX44oOqAx2f | 1584.142857 | 154.8571429 | 69 | 6217346 |
20-05-2020 07:00 | 4135001 | pkci93gMrogZuBj | 1550.571429 | 151.5 | 68.57142857 | 7201417.571 |
20-05-2020 07:00 | 4135001 | rGa61gmuvPhdLxV | 1542 | 150.6714286 | 68.57142857 | 7143880.571 |
20-05-2020 07:00 | 4135001 | sjndEbLyjtCKgGv | 1587.714286 | 155.2428571 | 69.57142857 | 7049353.571 |
20-05-2020 07:00 | 4135001 | uHbuxQJl8lW7ozc | 1588.571429 | 155.3 | 69.71428571 | 7071267.714 |
20-05-2020 07:00 | 4135001 | wCURE6d3bPkepu2 | 1578.571429 | 154.3 | 70 | 6815419 |
截止时间的数据展示
17-06-2020 23:30 | 4135001 | wCURE6d3bPkepu2 | 0 | 0 | 5883 | 7028601 |
17-06-2020 23:30 | 4135001 | z9Y9gH1T5YWrNuG | 0 | 0 | 5819 | 7251204 |
17-06-2020 23:30 | 4135001 | zBIq5rxdHJRwDNY | 0 | 0 | 5817 | 6583369 |
17-06-2020 23:30 | 4135001 | zVJPv84UY57bAof | 0 | 0 | 5910 | 7363272 |
17-06-2020 23:45 | 4135001 | 1BY6WEcLGh8j5v7 | 0 | 0 | 5521 | 6485319 |
17-06-2020 23:45 | 4135001 | 1IF53ai7Xc0U56Y | 0 | 0 | 6034 | 6433566 |
17-06-2020 23:45 | 4135001 | 3PZuoBAID5Wc2HD | 0 | 0 | 6052 | 7237425 |
17-06-2020 23:45 | 4135001 | 7JYdWkrLSPkdwr4 | 0 | 0 | 5856 | 7846821 |
17-06-2020 23:45 | 4135001 | McdE0feGgRqW7Ca | 0 | 0 | 5992 | 7408587 |
17-06-2020 23:45 | 4135001 | VHMLBKoKgIrUVDU | 0 | 0 | 6007 | 7456208 |
17-06-2020 23:45 | 4135001 | WRmjgnKYAwPKWDb | 0 | 0 | 5953 | 7273532 |
17-06-2020 23:45 | 4135001 | YxYtjZvoooNbGkE | 0 | 0 | 5886 | 7425442 |
17-06-2020 23:45 | 4135001 | ZnxXDlPa8U1GXgE | 0 | 0 | 5929 | 6770737 |
17-06-2020 23:45 | 4135001 | ZoEaEvLYb1n2sOq | 0 | 0 | 5871 | 7341753 |
17-06-2020 23:45 | 4135001 | adLQvlD726eNBSB | 0 | 0 | 5237.142857 | 6524508 |
17-06-2020 23:45 | 4135001 | bvBOhCH3iADSZry | 0 | 0 | 5460 | 6539009 |
17-06-2020 23:45 | 4135001 | iCRJl6heRkivqQ3 | 0 | 0 | 5957 | 7426263 |
17-06-2020 23:45 | 4135001 | ih0vzX44oOqAx2f | 0 | 0 | 5758 | 6426129 |
17-06-2020 23:45 | 4135001 | pkci93gMrogZuBj | 0 | 0 | 5952 | 7415430 |
17-06-2020 23:45 | 4135001 | rGa61gmuvPhdLxV | 0 | 0 | 5950 | 7356897 |
17-06-2020 23:45 | 4135001 | sjndEbLyjtCKgGv | 0 | 0 | 5887 | 7261681 |
17-06-2020 23:45 | 4135001 | uHbuxQJl8lW7ozc | 0 | 0 | 5967 | 7287002 |
17-06-2020 23:45 | 4135001 | wCURE6d3bPkepu2 | 0 | 0 | 5147.625 | 7028601 |
17-06-2020 23:45 | 4135001 | z9Y9gH1T5YWrNuG | 0 | 0 | 5819 | 7251204 |
17-06-2020 23:45 | 4135001 | zBIq5rxdHJRwDNY | 0 | 0 | 5817 | 6583369 |
17-06-2020 23:45 | 4135001 | zVJPv84UY57bAof | 0 | 0 | 5910 | 7363272 |
三.效果图
对项目感兴趣的,可以私信