【发布时间】:2019-12-22 19:52:13
【问题描述】:
我有来自我存储在时间序列中的传感器的数据。
当我绘制它们时,我得到:
这些数据应该是“连续的”,比如温度,不会上升和下降这么快。
在网上搜索了类似的问题后 - 我认为“平滑曲线”给了我更相关的结果 - 我将“卷积”应用于数据,使用 this answer 中提供的代码。
我得到:
这并不令人满意,因为我猜有些数据点只是“错误”,应该被删除,而不是平均。
用手来做很容易,因为我们可以猜到曲线:
这里是the data 和生成第二张图表的代码:
def smooth(y, box_pts):
import numpy as np
box = np.ones(box_pts)/box_pts
return np.convolve(y, box, mode='same')
def load_data(f):
from datetime import datetime as dt
with open(f, "rt") as fd:
X = []
Y = []
for line in fd.readlines():
(x,y)=line.strip().split(" ")
X.append(dt.fromtimestamp(int(x)))
Y.append(float(y))
return (X, Y)
import sys
(X,Y) = load_data(sys.argv[1])
from matplotlib.pyplot import plot, show
plot(X, Y,'b-')
plot(X, smooth(Y,19), 'g-', lw=2)
show()
我正在寻找一种可以删除“坏”值的算法,知道吗?
【问题讨论】:
-
不幸的是,我认为这是题外话。尝试统计堆栈交换?您也没有分享太多关于数据本身的信息,这当然很重要。
-
@AMC,我修复了指向数据的链接,以便可以复制图表。我交叉发布到“交叉验证”;看看它是否会带来答案......
标签: python charts time-series data-processing timeserieschart