【发布时间】:2019-12-20 00:37:08
【问题描述】:
我刚刚开始学习 python 并在这段代码中苦苦挣扎。我有一个数据框,如图所示。
我想在数据框中找到第一次出现的窗口,它有一定数量的大于阈值的值。
例如:
假设数据框的维度为 1000000 个值。我想将其划分为 1000 的滑动窗口,并且需要知道这 1000 个值是否至少有 10 个大于某个阈值的值。如果第一个窗口(点 0-999)没有至少 10 个大于某个阈值的值,则窗口将滑动并考虑值 1-1000。我必须找到第一次出现的窗口的索引,它至少有 10 个值大于阈值。
由于我在这里处理流数据,当数据帧中出现此类窗口时,我需要停止搜索。
我尝试了这段代码,但遇到关键错误,无法解决问题。
for i in np.arange(0,len(data)-999):
for j in np.arange(0,1000):
if data[i+j]>threshold:
var_count=var_count+1
if var_count>10:
print("Anomaly has occurred")
示例数据如下所示,大约有 180 万行。
示例数据可能如下所示
data_sample=[1,1,0,0,0,2,1,1,1,1,1,2,1,1,1,1,1,1,2,1,2,2,1,0,0,2,2,2,2,1,1,1]
data_sample=pd.DataFrame(data_sample)
threshold=1
window=5
因为我需要至少 2 个大于 1 的值,这将返回索引 18,因为在该索引处,我的长度为 5 的窗口至少有 2 个大于 1 的值。
【问题讨论】:
-
你怎么到 11?通过索引 8,您有 2 个高于 1 的值。在索引 12 处您只能得到 3 个高于 1 的值...
-
我更新了错误的样本数据,我再次用正确的数据更新了问题。