簡體   English   中英

在Python中對齊兩個數據集

[英]Aligning two data sets in Python

我想開發一些python代碼來對齊由記錄同一事件的不同工具獲得的數據集。

例如,假設我有兩組測量值:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# Define some data
data1 = pd.DataFrame({'TIME':[1.1, 2.4, 3.2, 4.1, 5.3],\
                      'VALUE':[10.3, 10.5, 11.0, 10.9, 10.7],\
              'ERROR':[0.2, 0.1, 0.4, 0.3, 0.2]})

data2 = pd.DataFrame({'TIME':[0.9, 2.1, 2.9, 4.2],\
                      'VALUE':[18.4, 18.7, 18.9, 18.8],\
              'ERROR':[0.3, 0.2, 0.5, 0.4]})

# Plot the data      
plt.errorbar(data1.TIME, data1.VALUE, yerr=data1.ERROR, fmt='ro')
plt.errorbar(data2.TIME, data2.VALUE, yerr=data2.ERROR, fmt='bo')
plt.show()

結果在這里繪制: 在此處輸入圖片說明

我現在想做的是將第二個數據集(data2)與第一個數據集(data1)對齊。 即得到這個: 在此處輸入圖片說明

必須通過從其所有值中減去一個常數(待確定),將第二個數據集移位以匹配第一個數據集。 我所知道的是數據集是相關的,因為這兩種儀器測量的是同一事件,但采樣率不同。

在此階段,我不想對哪種功能最能描述數據進行任何假設(將在對齊后進行擬合)。

我對使用手段進行移位非常謹慎,因為這可能會產生不良結果,具體取決於數據采樣的方式。 我正在考慮獲取每個data2 [TIME_i],並計算出與data1 [〜TIME_i]的最短距離。 然后將這些總和最小化。 但我不確定這是否也行得通。

有人對使用的好方法有什么建議嗎? 我看了mlpy,但它似乎只適用於一維陣列。

謝謝。

您可以減去差的平均值: data2.VALUE-(data2.VALUE - data1.VALUE).mean()

import pandas as pd
import matplotlib.pyplot as plt

# Define some data
data1 = pd.DataFrame({
    'TIME': [1.1, 2.4, 3.2, 4.1, 5.3],
    'VALUE': [10.3, 10.5, 11.0, 10.9, 10.7],
    'ERROR': [0.2, 0.1, 0.4, 0.3, 0.2],
})

data2 = pd.DataFrame({
    'TIME': [0.9, 2.1, 2.9, 4.2],
    'VALUE': [18.4, 18.7, 18.9, 18.8],
    'ERROR': [0.3, 0.2, 0.5, 0.4],
})

# Plot the data
plt.errorbar(data1.TIME, data1.VALUE, yerr=data1.ERROR, fmt='ro')
plt.errorbar(data2.TIME, data2.VALUE-(data2.VALUE - data1.VALUE).mean(),
             yerr=data2.ERROR, fmt='bo')
plt.show()

對齊的誤差線

另一種可能性是減去每個系列的平均值

您可以計算平均值的偏移量,然后從每個值中減去它。 如果對每個值都執行此操作,則它們應該相對對齊。 這將假定兩個數據集看起來都相對相似,因此可能效果不佳。

盡管此問題與Matlab無關,但您可能仍對此感興趣: 從非周期性離散時間信號中刪除未知的DC偏移

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM