不规则时间序列d值的计数变化

2024-06-16 10:04:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些时间序列数据是这样的:

Timestamp             Value
26/09/2013 17:00:00     1
26/09/2013 17:05:00     1
26/09/2013 17:08:41     1
26/09/2013 17:38:43     1
26/09/2013 17:49:55     0
26/09/2013 17:49:57     1

我想把它转换成一个普通的时间序列(15米),用15米时间段内数值变化的次数计数。所以像这样的事

^{pr2}$

我看过熊猫,不知道怎么做。在

一些背景知识可能会有所帮助。这是SCADA(传感器)数据-1和0对应于设备状态-例如开关打开或关闭。SCADA系统在变化时报告当前值,但也不定期地轮询和报告该时间点的当前值(可能没有改变)。在

我要做的是将数据转换成一个可以加载到数据库中的形式,然后我们就可以开始查询哪些开关频繁地改变状态。在


Tags: 数据value状态报告时间序列传感器次数
1条回答
网友
1楼 · 发布于 2024-06-16 10:04:16

这有点像黑客,但它很管用:

import datetime
import pandas as pd

time_vec =     [datetime.datetime(2013,9,26,17,0,0)
               ,datetime.datetime(2013,9,26,17,5,0) 
               ,datetime.datetime(2013,9,26,17,8,41)     
               ,datetime.datetime(2013,9,26,17,38,43)
               ,datetime.datetime(2013,9,26,17,49,55)
               ,datetime.datetime(2013,9,26,17,49,57)]
df = pd.DataFrame([1,1,1,1,0,1],index = time_vec,columns=['value'])

df['count_change']=0
df.ix[df.value!=df.value.shift(1),'count_change']=1
df.ix[0,'count_change']=0

df.resample('15min',how={'value': 'last', 'count_change': 'sum'},fill_method='ffill',label='right')

编辑:

我刚刚意识到,您可能只想在没有数据的间隔中向前填充value列,而不是count_change列(尽管在这个特定的示例中它不会更改任何内容)。解决方法可以是:

^{pr2}$

相关问题 更多 >