MyEMS开源能源管理系统适用于建筑、工厂、商场、医院、园区的电、水、气等能源数据采集、分析、报表,还有光伏、储能、充电桩、微电网、设备控制、故障诊断、工单管理、人工智能优化等可选功能。资深专业团队开发维护,保障长期支持。用开源助力企业集团、产业园区、能源运营商低碳发展!
官网: https://myems.io
MyEMS开源社区版下载: https://gitee.com/myems/myems
往期解读:https://blog.csdn.net/zgy5004/article/details/147954491?spm=1011.2415.3001.5331
本期解读:
能耗数据清洗算法:myems/myemscleaning/clean_energy_value.py
- 代码见底部截图
这段代码是一个用于清洁和标记能源数据质量的Python脚本,主要用于处理能源值数据,识别并标记出异常或“坏”的数据点。以下是对代码的概括性总结和详细解析:
总结
1.连接数据库: 脚本首先尝试连接到历史数据数据库。
2.确定处理时间范围: 确定需要清洁数据的时间范围。
3.识别异常数据:
- 步骤2: 检查两类异常数据。第一类是超出高低限的数据点;第二类是形状为凹形的数据序列。
- 步骤3: 对凹形数据进行更详细的检查,识别不符合正常趋势的数据点。
4.标记异常数据: 将识别为异常的数据点的is_bad属性标记为1。
5.重置未检查的数据: 将未检查的数据点的is_bad属性重置为0。
6.休眠与重试: 处理完毕后休眠一段时间后继续执行。
详细解读
1.数据库连接: 使用mysql.connector连接到MySQL数据库,处理任何连接错误。
2.确定时间范围:
- 从数据库中查询最后一个已检查(is_bad非空)和未检查(is_bad为空)的数据点的时间,以确定需要清洁的时间范围。
- 如果所有数据点都已检查,则从配置的起始日期时间开始。
3.异常数据检查: 检查两类异常数据。第一类是超出高低限的数据点;第二类是形状为凹形的数据序列。
- 步骤2: 检查两类异常数据。第一类是超出高低限的数据点;第二类是形状为凹形的数据序列。
- 步骤3: 对凹形数据进行更详细的检查,识别不符合正常趋势的数据点。
4.更新数据库
- 将识别为异常的数据点的is_bad属性更新为1。
- 对于那些在处理时间范围内未被检查的数据点,将它们的is_bad属性重置为0。
5.错误处理和日志记录: 在每一步骤中,如果遇到异常,记录错误信息,并在休眠后重试。
6.循环执行: 脚本在完成一次清洁操作后休眠一段时间(例如15分钟),然后重新开始,确保持续监控和清洁数据。
注意事项
- 脚本使用配置文件(config模块)来获取数据库连接信息和其他设置。
- 异常检测逻辑依赖于特定的业务规则和数据特性,可能需要根据实际情况调整。
- 数据库操作包括读取数据点、更新数据点的状态等,需要确保数据库性能可以支持这些操作。
- 错误处理和日志记录对于监控脚本状态和调试非常重要。
- 脚本在每次运行结束后休眠,这是为了避免过度频繁地查询数据库,同时允许新数据积累到一定量后再进行处理。