繁体   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