我知道有一个简单的解决方案可以解决我的熊猫问题(希望如此),但我不知道如何找到它。让我们说我有两个数据帧:
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。你有什么主意吗 ? 谢谢!
答案 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
的图表
请注意,我使用了100分的抽样,这对您的情况应该足够了。