📜  两列 pandas 之间的相关性 - Python (1)

📅  最后修改于: 2023-12-03 14:48:53.477000             🧑  作者: Mango

两列 pandas 之间的相关性 - Python

在数据分析过程中,了解数据之间的相关性非常重要。在 Python 中,使用 pandas 库可以轻松地计算两列之间的相关性。

相关性的定义

相关性表示两个变量之间的关系。如果两个变量趋势方向相同,则它们具有正相关性;而如果它们趋势方向相反,则它们具有负相关性。如果它们之间没有明显的变化,则它们具有低相关性。

pandas 中计算相关性

在 pandas 中,可以使用 corr() 方法计算两个 Series 之间的相关性。下面是一个示例:

import pandas as pd

# 创建两个 Series 对象
x = pd.Series([1, 2, 3, 4, 5])
y = pd.Series([5, 4, 3, 2, 1])

# 计算它们的相关性
correlation = x.corr(y)

print(correlation)
# 输出结果:-1.0

上面的代码创建了两个 Series 对象 xy,它们分别包含数字 1 到 5 和数字 5 到 1。通过调用 corr() 方法,计算了它们之间的相关性。由于它们的趋势是相反的,因此它们的相关性为 -1.0。

在实际情况中,我们更可能会计算 DataFrame 的列之间的相关性。下面是一个示例:

import pandas as pd

# 创建包含三列数据的 DataFrame
data = {
    'x': [1, 2, 3, 4, 5],
    'y': [5, 4, 3, 2, 1],
    'z': [2, 3, 1, 5, 4]
}
df = pd.DataFrame(data)

# 计算列之间的相关性
correlation = df.corr()

print(correlation)
# 输出结果:
#     x    y    z
# x  1.0 -1.0  0.6
# y -1.0  1.0 -0.6
# z  0.6 -0.6  1.0

上面的代码创建了一个包含三列数据的 DataFrame,并计算了它们之间的相关性。由于列 xy 趋势相反,所以它们的相关性为 -1.0;列 xz 趋势相同,所以它们的相关性为 0.6。

pandas 中可视化相关性

除了计算两列之间的相关性外,我们还可以使用 pandas 和 matplotlib 库绘制相关性矩阵图。下面是一个示例:

import pandas as pd
import matplotlib.pyplot as plt

# 创建包含三列数据的 DataFrame
data = {
    'x': [1, 2, 3, 4, 5],
    'y': [5, 4, 3, 2, 1],
    'z': [2, 3, 1, 5, 4]
}
df = pd.DataFrame(data)

# 计算列之间的相关性
correlation = df.corr()

# 绘制相关性矩阵图
fig, ax = plt.subplots()
im = ax.imshow(correlation, cmap='coolwarm')

# 添加标签和颜色条
ax.set_xticks(range(len(correlation.columns)))
ax.set_yticks(range(len(correlation.columns)))
ax.set_xticklabels(correlation.columns)
ax.set_yticklabels(correlation.columns)
fig.colorbar(im)

# 显示图像
plt.show()

上面的示例代码使用 imshow() 方法绘制相关性矩阵图,并使用颜色条表示相关性的强度。下图是该示例代码生成的图像:

相关性矩阵图

结论

通过使用 pandas 库,我们可以计算任意数量的列之间的相关性,并绘制相关性矩阵图,帮助我们更好地理解数据。