Python:如果数据更新少于15分钟,则检查计数为1,否则为0

问题描述 投票:0回答:1
timestamp,value
19/12/2017 12:00:00,12
19/12/2017 12:01:00,13
19/12/2017 12:05:00,15
19/12/2017 12:10:00,23
19/12/2017 12:11:00,46
19/12/2017 12:13:00,12
19/12/2017 12:14:59,34
19/12/2017 12:15:00,33
19/12/2017 12:16:00,33
19/12/2017 12:30:00,87
19/12/2017 12:50:00,44
19/12/2017 12:56:00,54
19/12/2017 1:16:00,54
19/12/2017 1:29:59,54

逻辑:<15分钟包括1其他0

以上是我的数据集,现在我希望设置15Min的频率,好像在15Min数据之内,所以新列条目将更新为1.如果数据不是15分钟,则条目将更新为0。注意:如果15分钟,任何一个数据也存在,那么它就是一个。

条件是;如果数据在时间戳12:00:00到12:14:59之间,那么其他数据为0。如果有任何缺失的数据,那么也将为0。

码:

import pandas as pd
df = pd.read_csv('mydata.csv', parse_dates=['timestamp'] )
print (df)
mask=(df['timestamp'].dt.minute<15)
df1 = df[mask]
print (df1)

预期产量:

2017-12-19 12:00:00     12    1    
2017-12-19 12:01:00     13    1  
2017-12-19 12:05:00     15    1  
2017-12-19 12:10:00     23    1  
2017-12-19 12:11:00     46    1
2017-12-19 12:13:00     12    1 
2017-12-19 12:14:59     34    1  
2017-12-19 12:15:00     33    1  
2017-12-19 12:16:00     33    1  
2017-12-19 12:30:00     87    1  
2017-12-19 12:50:00     44    1 
2017-12-19 12:56:00     54    1  
2017-12-19 01:00:00 to 2017-12-19 01:14:59 no data update as 0
2017-12-19 01:16:00     54    0    
2017-12-19 01:29:59     54    0

要求是;我检查15分钟的频率是数据不存在或丢失15分钟比将其设为0并且如果数据在15分钟内比将使其为1。

python datetime time-series frequency-analysis
1个回答
0
投票

这是代码可以获得您想要的输出并帮助获取图形。

import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('mydata.csv', parse_dates=['timestamp'] )
df['new'] = df['timestamp'].diff().dt.total_seconds().fillna(0).abs().lt(60 * 15).astype(int) 
df = df.sort_values('timestamp', ascending=True)
plt.plot(df['timestamp'], df['new'])
plt.xticks(rotation='vertical')
plt.show()
© www.soinside.com 2019 - 2024. All rights reserved.