我知道我的熊猫问题有一个简单的解决方案(希望如此),但我只是不知道如何找到它。假设我有两个数据帧:
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会更容易一些。你有什么想法吗?谢谢!
发布于 2018-01-27 01:22:20
如果我理解正确的话,您需要将它们带到一个公共网格(横坐标),以便对其执行减法和统计。
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个点的样本,对于您的情况应该足够了。
https://stackoverflow.com/questions/48465333
复制相似问题