我是 pandas/python 的新手。我想知道函数 .corr 在计算相关性时如何删除具有多个变量的数据帧的空数据。
例如,假设我有以下数据框:
# 'A1' 'A2' 'A3'
1 4 3 1
2 2 5 NA
3 3 2 NA
4 NA 10 2
1) 它是否删除了至少有一个 NA/null 值的整行? (在这种情况下,只会考虑第一行来计算相关矩阵)
或
2) 它是否计算成对相关性,只排除单个值? (例如,对于“A1”和“A2”之间的相关性,它计算第 1、2 和 3 行;对于“A1”和“A3”之间的相关性,它计算第 1 行和第 4 行。)
我没有在函数 .corr 文档中找到此类信息。它只是说它删除了空值。对不起,如果这是一个愚蠢的问题。我很乐意了解在哪里可以找到有关功能的此类详细信息。
最佳答案
如果其中一个观察值具有 NaN
值,Pandas 将忽略成对相关。我们可以通过删除这些值并检查结果来验证这一点。
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
具有以下关联结果:
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
现在,如果我们从 A1
列中删除 NaN
,我们可以检查结果是否相同:
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
类似于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
编辑
只是为了补充一点答案,并回头引用这个 answer ,您可以看到 pandas 将在计算中忽略 NaN
值,而 numpy np.corrcoef
不会:
np.corrcoef(df.values)
Out[12]:
array([[ 1., nan, nan, nan],
[nan, nan, nan, nan],
[nan, nan, nan, nan],
[nan, nan, nan, nan]])
关于python - .corr 如何删除 NA 和空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57155427/