我有一个类似下面的数据集。在这个数据集中,有不同颜色的温度计,并给出了“True”或参考温度,以及它们根据某些测量方法“Method 1”和“Method 2”的测量差异。
我遇到了计算两个重要参数的困难,它们是均值绝对误差(MAE)和均值有符号误差(MSE)。我想使用每种方法的非NaN值并打印结果。
我已经可以返回一个两列索引和总和的系列,但问题在于在这种情况下我需要除以求和的方法值数量,这取决于一行中有多少NaN值。而且我不想因为整行有NaN值就跳过整行。
我遇到了计算两个重要参数的困难,它们是均值绝对误差(MAE)和均值有符号误差(MSE)。我想使用每种方法的非NaN值并打印结果。
我已经可以返回一个两列索引和总和的系列,但问题在于在这种情况下我需要除以求和的方法值数量,这取决于一行中有多少NaN值。而且我不想因为整行有NaN值就跳过整行。
编号 | 日期 | 温度计颜色 | 真实温度 | 方法 1 | 方法 2 |
---|---|---|---|---|---|
0 | 2021 年 1 月 1 日 | 红色 | 0.2 | 0.2 | 0.5 |
1 | 2021 年 1 月 1 日 | 红色 | 0.6 | 0.6 | 0.3 |
2 | 2021 年 1 月 1 日 | 红色 | 0.4 | 0.6 | 0.23 |
3 | 2021 年 1 月 1 日 | 绿色 | 0.2 | 0.4 | NaN |
4 | 2021 年 1 月 1 日 | 绿色 | 1 | 1 | 0.23 |
5 | 2021 年 1 月 1 日 | 黄色 | 0.4 | 0.4 | 0.32 |
6 | 2021 年 1 月 1 日 | 黄色 | 0.1 | NaN | 0.4 |
7 | 2021 年 1 月 1 日 | 黄色 | 1.3 | 0.5 | 0.54 |
8 | 2021 年 1 月 1 日 | 黄色 | 1.5 | 0.5 | 0.43 |
9 | 2021 年 1 月 1 日 | 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。
我希望您能帮忙解答这个问题。谢谢! |