[英]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.