首页 > 解决方案 > Python中与if条件相关的公式

问题描述

例如,我有一个数据集,如下所示:

| A | B |  C |
| - | - | -  |
| 2 | 6 | 10 |
| 3 | 7 | 15 |
| 1 | 4 | 24 |
| 6 | 2 | 20 |

所以我需要找到每个C的条件列之间的相关性(如果C> 15,如果C> 20等),并找到最大的C相关性?

有没有办法用一些公式和 if 语句来做到这一点?因为有超过 5000 行,我不知道如何快速完成......

在此先感谢您对初学者的帮助:)

标签: pythoncorrelation

解决方案


查看相关公式,您需要 2 个和:(x-ux)(y-uy) 和 (x-ux)²(y-uy)²。如果您被允许使用所有行的平均值(即使您正在计算行子集的相关性),那么您可以对行进行排序并逐个遍历它们,添加到总和并重新计算相关性随着你的前进。

伪代码:

rows.sort_by("C")
means = calc_means(rows)
diff_sum = 0
square_diff_sum = 0
max_correlation = 0
max_C = 0
for row in rows:
    diff_sum += (row["A"]-means["A"])*(row["C"]-means["C"])
    square_diff_sum += (row["A"]-means["A"])^2 * (row["C"]-means["C"])^2
    correlation = diff_sum/sqrt(square_diff_sum)
    if correlation > max_correlation:
        max_correlation = correlation
        max_C = row["C"]
print(max_correlation, max_C)

如果您不允许使用“全局”均值,那么您可以一次性计算所有均值(C<10 的均值、C<15 的均值等),但我认为您可能需要每个平均值的另一个完整通道以找到相关性。尽管可能有一种聪明的方法可以一次性完成。


推荐阅读