首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用时间序列进行数据清洗

使用时间序列进行数据清洗
EN

Stack Overflow用户
提问于 2020-12-07 17:39:47
回答 1查看 41关注 0票数 0

我有一个数据清理问题。我在没有关掉设备的情况下连续做了两个实验。我希望实验1中的所有数据都在一个csv中,而实验2中的所有数据都在不同的csv中。实验之间最明显的界限是一个更长的时间段,但不幸的是,这从来不是一个固定的时间段。另一种可能性是根据张力数据中的峰值来划分数据,然后重新组合它们。不知何故。有没有人对可能实现这一点的算法有什么想法?下面是一些模拟数据。时间数据在pandas DateTimeIndex中。

代码语言:javascript
运行
复制
# Experiment 1, Trial 1
DateTimeIndex  Tension
7/25/2020 9:32 0
7/25/2020 9:33 0
7/25/2020 9:34 24
7/25/2020 9:35 100
7/25/2020 9:36 50
7/25/2020 9:37 20
7/25/2020 9:38 0
#Noise
7/25/2020 9:39 -25
7/25/2020 9:40 4
7/25/2020 9:41 11
#Experiment 1: Trial 2
7/25/2020 9:43 2
7/25/2020 9:44 3
7/25/2020 9:45 25
7/25/2020 9:46 150
7/25/2020 9:47 60
7/25/2020 9:48 70
7/25/2020 9:49 2
# Lots and Lost of Noise Between Trials
#Experiment 2: Trial 1
7/25/2020 10:06 0
7/25/2020 10:07 0
7/25/2020 10:08 24
7/25/2020 10:09 100
7/25/2020 10:10 50
7/25/2020 10:11 20
7/25/2020 10:12 -3
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-07 18:19:13

您可以使用scipy的函数(查找峰值)找到信号的峰值。这个函数有一个很好的寻找峰值的启发式方法,你可以使用它的参数来对你有利。在找到峰值后,您可以使用这些索引并迭代相邻的索引,以访问不同的段。请参见附件示例:

代码语言:javascript
运行
复制
import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import find_peaks
from scipy.signal import medfilt
data = np.sin(np.linspace(0, 8*np.pi))
indices = find_peaks(data)[0]
indices = np.unique(np.concatenate([[0, data.size-1], indices]))
for i in range(len(indices) - 1):
  i0, i1 = indices[i: i+2]
  plt.plot(np.arange(i0, i1 + 1), data[i0:i1 + 1])

输出:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65179252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档