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