算例:
原始冰箱用电数据
事件划分代码:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# @Author: yudengwu
# @Date : 2020/6/14
import pandas as pd
data=pd.read_csv('冰箱用电.csv')
#转换时间格式
data.loc[:, 'time'] = pd.to_datetime(data['time'],format='%Y-%m-%dT%H:%M:%S')
threshold = pd.Timedelta(minutes=10) #阈值为10分钟
data=data[data['value']>50]
d = data['time'].diff() > threshold #相邻时间作差分,比较是否大于阈值
data['事件编号'] = d.cumsum() + 1 #通过累积求和的方式为事件编号
print(data)
将用电功率大于50 且连续值超过10分钟的命名为1个事件 。
从该段用electricity功率小于50的状态向前找到最后一条功率小于50 的用electricity记录作为上一次用electricity事件结束;向后找到用electricity功率大于50的状态记录作为下一个用electricity事件的开始。
结果:
解释说明:
d = data[‘time’].diff() > threshold #相邻时间作差分,比较是否大于阈值
d的样子如下:
比较相邻两个样本的时间差,事件内是false,两个事件之间有一个True
来源于:@Author: yudengwu