熊猫插值/ MSE

时间:2018-01-26 16:19:22

标签: python pandas

我知道有一个简单的解决方案可以解决我的熊猫问题(希望如此),但我不知道如何找到它。让我们说我有两个数据帧:

df1 = pd.DataFrame({'x1': [1, 2, 3], 'y1': [1, 4, 9]})
df2 = pd.DataFrame({'x2': [1.5, 2, 3.1, 3.9], 'y2': [1, 3, 5.5, 8]})

我想计算均方误差和这两条曲线之间的标准差。我以为我可以通过将这两个数据帧与一个轴连接来进行插值" X"包含x1和x2,以及两个轴" Y1"和" Y2"包含y1和y2值以及插值。

我可以用循环做到这一点,但我很确定它必须在某种程度上更容易使用Pandas。你有什么主意吗 ? 谢谢!

1 个答案:

答案 0 :(得分:1)

如果我理解正确,你需要将它们带到一个公共网格(横坐标),以便对它进行减法和统计。

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

df1 = pd.DataFrame({'x1': [1, 2, 3], 'y1': [1, 4, 9]})
df2 = pd.DataFrame({'x2': [1.5, 2, 3.1, 3.9], 'y2': [1, 3, 5.5, 8]})
df = pd.DataFrame(columns=['df1', 'df2'], index=np.linspace(0, 4, 100))
df['df1'] = np.interp(df.index, df1.x1, df1.y1)
df['df2'] = np.interp(df.index, df2.x2, df2.y2)
print("MSE = {}".format(np.sqrt((df.df1.values**2 - df.df2.values**2).mean())))
print("STD = {}".format((df.df1.values - df.df2).std()))

df.plot()
plt.show()

那会产生输出

MSE = 4.051003878995869
STD = 1.1595280634334968

enter image description here

的图表

请注意,我使用了100分的抽样,这对您的情况应该足够了。