繁体   English   中英

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

[英]Data Cleaning with Time Series

我有一个数据清理问题。 我在没有关闭设备的情况下连续进行了两次实验。 I want all my data from Experiment 1 to go in one csv, and all my data from Experiment 2 to go into a different csv. 实验之间最明显的分界是更长的时间段,但不幸的是,这从来都不是一个固定的时间段。 另一种可能性是通过张力数据中的峰值拆分数据,然后以某种方式重新组合它们。 有没有人对可能实现这一目标的算法有任何想法? 下面是一些模拟数据。 时间数据位于 pandas DateTimeIndex 中。

# 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

您可以使用 scipy 的 function 找到信号的峰值(查找峰值)。 这个 function 具有很好的发现峰值的启发式方法,您可以使用它的参数来为您带来好处。 找到峰值后,您可以获取这些索引并遍历相邻索引以访问您的不同段。 见附件示例:

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])

output: 输出 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM