为了解决这个问题,我看了一篇关于时间序列的文章 。为了发现异常情况,我首先选择了本文中概述的移动平均函数。
部分数据集:
时间,dB
0.-117
0.0001.46
0.0002.-478
0.000300001.2
..........
59.9998.-208
59.9999.-95
60.-169
I首先读取文件
df = pd.read_csv("data.csv", sep=',')
df.columns = ['Time, seconds', 'Series values, dB']
我编写了一个函数来根据数据集数据绘制图表:
def plotMovingAverage(series, n):
rolling_mean = series.rolling(window=n).mean()
plt.figure(figsize=(15,5))
plt.title("Moving average\n window size = {}".format(n))
plt.plot(rolling_mean, "g", label="Rolling mean trend")
plt.plot(series[n:], label="Actual values")
plt.legend(loc="upper left")
plt.grid(True)
然后调用这个函数:
plotMovingAverage(df, 60) #60 секунд
plt.show()
问题:
但是这个图表达了值和行数(600000)之间的关系,我需要一个时间值图。图中也不可能突出显示移动平均线本身。请告知我该怎么做?在这种情况下编写此函数的正确方法是什么?


尽管评论中进行了讨论,但我仍然不明白您到底想要什么以及结果中什么不适合您。因此,我正在发布我的解决方案版本,其中数据在那里,移动视图可见,并且图形没有双重叠加。当然,这是一个关于人工数据且不调用函数的示例。但我希望这不会阻止您根据需要调整代码。(顺便说一句,当然,无论是在你的函数中还是在我的代码中,都没有搜索异常。但是这里不再需要绘制图表,而是应用适当的算法。顺便说一句,你可以不用任何图表。)。
结果
它?
这可以通过另一种方式完成。对于移动平均线,我们需要采用一定的窗口大小。这里我们取窗口大小=3600,即 移动平均1小时。
制定时间表
但为了更好地显示图形,最好聚合数据,因为数据很多。