我有一个如下的数据集。在该数据集中,有不同颜色的温度计,给定“真实”或参考温度,根据一些测量方法“方法1”和“方法2”,它们测量的差异有多大
我在计算我需要的两个重要参数时遇到困难,它们是平均绝对误差(MAE)和平均符号误差(MSE)。我想为每个方法使用非NaN值并打印结果
我能够得到一个点,在这个点上,我可以返回一个索引和求和的两列序列,但在这个例子中的问题是,我需要除以求和的方法值的数量,它的变化取决于一行中有多少个NaN。我不想仅仅因为有一个NaN就跳过整行
我的代码:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.style.use('default'
data = pd.read_csv('data.txt', index_col=0)
data
data["M1_ABS_Error"]= abs(data["True_Temperature"]-data["Method_1"])
data["M2_ABS_Error"]= abs(data["True_Temperature"]-data["Method_2"])
MAE_Series=data[['Name', 'M1_ABS_Error', 'M2_ABS_Error' ]]
MAE_Series.sum(axis=1, skipna=True)
但目前的输出是这样的,它并没有指定这是属于哪个颜色的温度计,我希望它能以一种易于关联的方式打印出来。此外,正如我所提到的,这还没有说明如何除以给定行中的值/方法数来说明NaN
0 4.94
1 3.03
2 11.88
3 3.28
4 8.14
5 7.80
6 2.76
7 2.71
我会感谢你在这方面的帮助。谢谢
编辑
我想我现在明白了,如果这是你想要的,请告诉我
MAE:
产生
对于MSE(有符号错误)
产生
原始答案
现在还不完全清楚你想要什么,但这里有点猜测,这就是你想要的吗?如果按颜色
groupby
并将mean
应用于每个组中的`ABS列你明白了吗
这里,例如,左上角的第一个数字“0.066667
is the average of the
M1_ABS_Errorcolumn for those Thermometers that are
红色”。与其他类似。在每个颜色/列中跳过NAN要得到MSE(通常意味着平均平方误差,所以我假设这就是你想要的),你可以这样做
得到
相关问题 更多 >
编程相关推荐