我是熊猫/蟒蛇的新手。我想知道函数 .corr 在计算相关性时如何删除具有多个变量的数据帧的空数据。
例如,假设我有以下数据框:
# 'A1' 'A2' 'A3'
1 4 3 1
2 2 5 NA
3 3 2 NA
4 NA 10 2
Run Code Online (Sandbox Code Playgroud)
1)它是否删除了至少有一个 NA/null 值的整行?(在这种情况下,只考虑第一行来计算相关矩阵)
或者
2)它是否计算成对相关,只排除单个值?(例如,对于“A1”和“A2”之间的相关性,它计算第 1、2 和 3 行;对于“A1”和“A3”之间的相关性,它计算第 1 行和第 4 行。)
我在函数 .corr 文档中没有找到这样的信息。它只说它删除了空值。对不起,如果这是一个愚蠢的问题。我很乐意了解在哪里可以找到有关函数的此类详细信息。
如果成对相关NaN在其中一个观察中有价值,熊猫将忽略它。我们可以通过删除这些值并检查结果来验证这一点。
df
Out[8]:
A1 A2 A3
0 4.0 3 1.0
1 2.0 5 NaN
2 3.0 2 NaN
3 NaN 10 2.0
Run Code Online (Sandbox Code Playgroud)
相关结果如下:
df.corr()
Out[9]:
A1 A2 A3
A1 1.000000 -0.654654 NaN
A2 -0.654654 1.000000 1.0
A3 NaN 1.000000 1.0
Run Code Online (Sandbox Code Playgroud)
现在,如果我们删除NaNfrom 列,A1我们可以检查结果是否相同:
df[pd.isnull(df['A1'])==False].corr()
Out[10]:
A1 A2 A3
A1 1.000000 -0.654654 NaN
A2 -0.654654 1.000000 NaN
A3 NaN NaN NaN
Run Code Online (Sandbox Code Playgroud)
与 A3 类似:
df[pd.isnull(df['A3'])==False].corr()
A1 A2 A3
A1 NaN NaN NaN
A2 NaN 1.0 1.0
A3 NaN 1.0 1.0
Run Code Online (Sandbox Code Playgroud)
编辑
只是为了补充一点答案,并参考这个答案,您可以看到熊猫会忽略NaN计算中的值,而 numpynp.corrcoef不会:
np.corrcoef(df.values)
Out[12]:
array([[ 1., nan, nan, nan],
[nan, nan, nan, nan],
[nan, nan, nan, nan],
[nan, nan, nan, nan]])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3455 次 |
| 最近记录: |