gpt4 book ai didi

python - 使用 pandas.shift() 根据 scipy.signal.correlate 对齐数据集

转载 作者:太空宇宙 更新时间:2023-11-03 12:40:09 25 4
gpt4 key购买 nike

我的数据集如下所示:data0 , data1 , data2 (类似于时间对电压数据)

如果我使用如下代码加载和绘制数据集:

import pandas as pd
import numpy as np
from scipy import signal
from matplotlib import pylab as plt

data0 = pd.read_csv('data0.csv')
data1 = pd.read_csv('data1.csv')
data2 = pd.read_csv('data2.csv')

plt.plot(data0.x, data0.y, data1.x, data1.y, data2.x, data2.y)

我得到类似的东西:

plotting all three datasets

现在我尝试将 data0 与 data1 相关联:

shft01 = np.argmax(signal.correlate(data0.y, data1.y)) - len(data1.y)
print shft01
plt.figure()
plt.plot(data0.x, data0.y,
data1.x.shift(-shft01), data1.y)
fig = plt.gcf()

输出:

-99

shifted version of data1

正如预期的那样工作!但是如果我用 data2 尝试同样的事情,我会得到一个看起来像这样的图:

shifted version of data2

正向偏移 410。我想我只是不明白 pd.shift() 是如何工作的,但我希望我可以使用 pd.shift() 来对齐我的数据集。据我所知,correlate() 的返回告诉我我的数据集有多远,所以我应该能够使用 shift 来重叠它们。

最佳答案

panda.shift() 不是沿 x 轴移动曲线的正确方法。您应该调整点的 X 值:

plt.plot(data0.x, data0.y)
for target in [data1, data2]:
dx = np.mean(np.diff(data0.x.values))
shift = (np.argmax(signal.correlate(data0.y, target.y)) - len(target.y)) * dx
plt.plot(target.x + shift, target.y)

这是输出:

enter image description here

关于python - 使用 pandas.shift() 根据 scipy.signal.correlate 对齐数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19642443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com