使用Google表格公式计算归一化分数

时间:2019-06-27 19:02:37

标签: python google-sheets excel-formula google-sheets-formula

我有一个如下所示的电子表格:

        Score1    Score2    Score3
Joe          8         5         3 
Jane         4         6         2
Abdul        5         5         3
Nadia        9         7         5

我想为每个人计算一个包含“平均归一化分数”(ANS)的新列,其中,对于每个分数,我通过减去平均值并除以该得分列的标准差得到“归一化分数” ,然后平均这些归一化的分数即可获得每人的ANS。

结果应为:

        Score1    Score2    Score3        ANS
Joe          8         5         3     -0.135
Jane         4         6         2     -0.686
Abdul        5         5         3     -0.621
Nadia        9         7         5      1.44

此操作的python式伪代码为:

for j in [1..N_cols]:
    mean_scores = mean(score[i, j] for i in [1..N_rows])
    std_scores = std(score[i, j] for i in [1..N_rows])
    for i in [1..N_rows]:
        norm_scores[i, j] = (scores[i, j] - mean_scores)/std_scores

for i in [1..N_rows]:
    avg_norm_scores[i] = mean(norm_scores[i, j] for j in [1..N_cols])

或者用numpy来简单地是:

avg_norm_scores = ((scores - scores.mean(axis=0))/scores.std(axis=0)).mean(axis=1)

我可以在Google表格中计算出包含ANS的新列的最简洁的方法是什么?

1 个答案:

答案 0 :(得分:1)

也许不是最简洁,但是正确的答案:

=average((B2-average(B:B))/STDEVP(B:B),(C2-average(C:C))/STDEVP(C:C),(D2-average(D:D))/STDEVP(D:D))

复制为适合,假设8在B2中。