python - .corr 如何删除 NA 和空值?

标签 python pandas

我是 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/

相关文章:

python - Django Rest Framework 全局分页和 pagination_class 不起作用

python - 多次调用时如何停止长时间运行的函数?

python新手问题: converting code to classes

python - 使用预定义的命名约定将单个 pandas 数据框划分为多个 csv 文件

python - pandas,将数据框中的所有数值乘以一个常数

Pandas:如何使用另一列列出一列中存在的起始值和结束值之间的数字?

python - 将今天的日期与数据框中的日期进行比较

python - 在 numpy 结构化数组列上执行 math.sqrt

python - pandas 不读取指数形式的 csv 数据

python - 如何使用将数据框显示为表格的常量 url 构建静态网站