首页 > 解决方案 > 使用 Google Sheet 公式计算归一化分数

问题描述

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

        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-esque 伪代码将是:

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)

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

标签: pythongoogle-sheetsexcel-formulagoogle-sheets-formula

解决方案


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

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

复制下来以适应,假设8在 B2 中。


推荐阅读