python - 当我在 Pandas 中使用 df.corr 时,我的一些专栏丢失了

标签 python pandas correlation

这是我的代码:


import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

data = pd.read_csv('death_regression2.csv')
data3 = data.replace(r'\s+', np.nan, regex = True)  


plt.figure(figsize=(90,90)) 
corr = data3.corr()

print(np.shape(list(corr)))
print(np.shape(data3))

(135,) (4909, 204)

所以在我使用相关函数之前,参数总数是 204(列数) 但在使用 data3.corr() 后,一些参数丢失,减少到 135。

如何检查数据中所有列之间的相关性?

最佳答案

在没有看到任何其他数据来理解您为什么缺少列的情况下,我们将不得不检查什么 pd.DataFrame.corr

作为documentation概述它计算列的成对相关性。因为您没有指定任何参数,所以使用默认方法计算 Pearson's r ,它测量两个变量(X,Y)之间的线性相关性,并且可以取 -1 和 1 之间的值,对应于精确的负线性相关和精确的正线性相关,以及介于两者之间的所有值,0 表示不相关(即,X 对 Y 的绘图是随机的,线性回归将拟合平坦的斜率)。

对于非数值变量,没有相关性的概念(至少在 Pearson's r 和这个答案的上下文中)并且 pd.DataFrame.corr 简单地忽略非数值(即,非-float 或非整数值)并删除这些列,解释为什么你有较少的列。

如果您删除的值实际上是数字但存储(例如)为字符串,您可能需要在调用 .corr() 之前转换它们。

举个例子:

x = np.random.rand(10)
y = np.random.rand(10)
x_scaled = x*6 
cat = ['one', 'two', 'three', 'four', 'five', 
       'six','seven', 'eight', 'nine', 'ten']

df = pd.DataFrame({'x':x, 'y':y, 'x_s':x_scaled, 'cat':cat})

df.corr()

返回:

        x            y          x_s
 x   1.000000    -0.470699    1.000000
 y  -0.470699     1.000000   -0.470699
x_s  1.000000    -0.470699    1.000000

这是我们的相关矩阵,但我们的非数字列 (cat) 已被删除。

如果你将不同的数值变量相互绘制,你会得到下面的图:

pearsons_r_example

这有助于突出不同的相关性:xy 之间偶然存在负线性相关。

关于python - 当我在 Pandas 中使用 df.corr 时,我的一些专栏丢失了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54980417/

相关文章:

python - 使用 Python OpenCV 将图像捕获为数组

Python Selenium : Element is not currently visible and may not be manipulated

python - Pandas:计算平均值,忽略自己行的值

python - 如何仅使用返回多个值的函数的一个特定输出来操作列条目?

python - Pandas 滚动窗口 Spearman 相关性

python - 为什么我不断收到模块 'azure' 未找到错误? [Azure IoT Edge 特定]

python-3.x - 在 Pandas 中重新索引多索引数据帧

python - 根据用户输入绘制特定列

python - 在 python 中,我们如何找到两个矩阵之间的相关系数?

r - 如何在图形中放置 colorlegend (corrplot)