使用Python创建一个相关的矩阵

  • Post category:Python

创建一个相关的矩阵可以使用Python中的pandas和numpy库来处理。下面是具体的步骤:

1. 导入库

使用import关键字导入需要使用的库。

import pandas as pd
import numpy as np

2. 创建随机数据

使用numpy中的random模块生成随机数,创建数据集。

np.random.seed(0)
df = pd.DataFrame(np.random.randn(6, 4), columns=list('ABCD'))

这里生成了一个6行4列的随机数据,并使用columns参数给每列命名为ABCD。

3. 计算相关系数

计算出数据集中各列之间的相关系数。pandas中的corr函数可以直接计算出DataFrame数据集中各列之间的相关系数,此处指定的method参数默认为pearson方法计算相关系数。

corr_matrix = df.corr()

4. 可视化相关矩阵

使用matplotlib和pandas的style模块绘制相关矩阵的可视化图形。

import matplotlib.pyplot as plt
import matplotlib.cm as cm

fig, ax = plt.subplots()

cax = ax.matshow(corr_matrix, cmap=cm.coolwarm)

fig.colorbar(cax)

ticks = np.arange(0,len(corr_matrix.columns),1)
ax.set_xticks(ticks)
plt.xticks(rotation=90)
ax.set_yticks(ticks)
ax.set_xticklabels(corr_matrix.columns)
ax.set_yticklabels(corr_matrix.columns)

plt.show()

示例一

接下来,我们将自定义一个数据集进行相关矩阵的计算和可视化,示例代码如下:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm

df = pd.DataFrame({'A': [1, 2, 3, 4], 'B': [2, 2, 3, 5], 'C': [5, 6, 5, 7], 'D': [8, 7, 8, 9]})

corr_matrix = df.corr()

fig, ax = plt.subplots()

cax = ax.matshow(corr_matrix, cmap=cm.coolwarm)

fig.colorbar(cax)

ticks = np.arange(0,len(corr_matrix.columns),1)
ax.set_xticks(ticks)
plt.xticks(rotation=90)
ax.set_yticks(ticks)
ax.set_xticklabels(corr_matrix.columns)
ax.set_yticklabels(corr_matrix.columns)

plt.show()

运行以上示例代码,将会生成一个可视化的相关矩阵,其中A、B、C、D四列的每两列之间的相关系数都会被计算。

示例二

再来一个稍微复杂一点的示例,需要使用到numpy的多维数组来生成数据集。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm

data = {'col_{}'.format(i): np.random.normal(size=100) for i in range(10)}

df = pd.DataFrame(data)

corr_matrix = df.corr()

fig, ax = plt.subplots()

cax = ax.matshow(corr_matrix, cmap=cm.coolwarm)

fig.colorbar(cax)

ticks = np.arange(0,len(corr_matrix.columns),1)
ax.set_xticks(ticks)
plt.xticks(rotation=90)
ax.set_yticks(ticks)
ax.set_xticklabels(corr_matrix.columns)
ax.set_yticklabels(corr_matrix.columns)

plt.show()

运行以上代码后,将会生成一个10列的数据集,然后计算并可视化这个数据集中各列之间的相关系数。