在 Python 中计算校正因子

Calculate correction factor in Python

我有三个数据框:

true false category 
36   25    3
40   25    3
46   23    3
40   22    5
42   20    4
56   39    3
50   40    3
44   27    4
51   39    5
54   31    5
50   38    4

我尝试为每个类别计算一个校正因子来校正“错误”值。 所以f.e。对于类别 5:

correction1 = 40/22 = 1.82
correction2 = 51/39 = 1.31
correction3 = 54/31 = 1.74

那么这些校正因子的算术平均值就是1.62。 因此,结果应该是每个类别的平均校正因子。

问题:Python/NumPy中是否有内置函数来计算这个?

您可以按如下方式进行:

(df['true'].div(df['false'])).groupby(df['category']).mean()

这只是构建比率,然后按 category 对它们进行分组,最终计算出 mean

获取测试数据:

from io import StringIO

infile= StringIO(
"""true false category 
36   25    3
40   25    3
46   23    3
40   22    5
42   20    4
56   39    3
50   40    3
44   27    4
51   39    5
54   31    5
50   38    4""")
df= pd.read_csv(infile, sep='\s+', dtype='int16')

结果是:

category
3    1.545179
4    1.681806
5    1.622603
dtype: float64

如果您想坚持使用 numpy:

import numpy as np
ratio = np.array(df1) / np.array(df2)
df3 = np.array(df3)
mean = {c : np.mean(ratio[df3 == c]) for c in set(df3)}

您的数据示例输出:

{3: 1.5451794871794873, 4: 1.68180636777128, 5: 1.6226032032483646}

但我确实喜欢 jottbe 的回答,如果您已经在使用 pandas 那么可能就是这样。