首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pandas插值/MSE

Pandas插值/MSE
EN

Stack Overflow用户
提问于 2018-01-27 00:19:22
回答 1查看 200关注 0票数 0

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

代码语言:javascript
复制
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会更容易一些。你有什么想法吗?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-27 01:22:20

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

代码语言:javascript
复制
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()

这将产生输出

代码语言:javascript
复制
MSE = 4.051003878995869
STD = 1.1595280634334968

以及数值的曲线图

请注意,我使用了100个点的样本,对于您的情况应该足够了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48465333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档