簡體   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