Pandas の相関行列

Suraj Joshi 2023年1月30日
  1. DataFrame.corr() メソッドを用いた相関行列の生成
  2. Matplotlib.pyplot.matshow() メソッドを使って Pandas の相関行列を可視化する
  3. seaborn.heatmap() メソッドを用いて Pandas の相関行列を可視化する
  4. DataFrame.style プロパティを用いて相関行列を可視化する
Pandas の相関行列

このチュートリアルでは、Matplotlib の DataFrame.corr() メソッドを使って相関行列を生成し、pyplot.matshow() メソッドを使って相関行列を可視化する方法を説明します。

import pandas as pd

employees_df = pd.DataFrame(
    {
        "Name": ["Jonathan", "Will", "Michael", "Liva", "Sia", "Alice"],
        "Age": [20, 22, 29, 20, 20, 21],
        "Weight(KG)": [65, 75, 80, 60, 63, 70],
        "Height(meters)": [1.6, 1.7, 1.85, 1.69, 1.8, 1.75],
        "Salary($)": [3200, 3500, 4000, 2090, 2500, 3600],
    }
)

print(employees_df, "\n")

出力:

       Name  Age  Weight(KG)  Height(meters)  Salary($)
0  Jonathan   20          65            1.60       3200
1      Will   22          75            1.70       3500
2   Michael   29          80            1.85       4000
3      Liva   20          60            1.69       2090
4       Sia   20          63            1.80       2500
5     Alice   21          70            1.75       3600

DataFrame employees_df を用いて相関行列を生成し、可視化する方法を説明します。

DataFrame.corr() メソッドを用いた相関行列の生成

import pandas as pd

employees_df = pd.DataFrame(
    {
        "Name": ["Jonathan", "Will", "Michael", "Liva", "Sia", "Alice"],
        "Age": [20, 22, 29, 20, 20, 21],
        "Weight(KG)": [65, 75, 80, 60, 63, 70],
        "Height(meters)": [1.6, 1.7, 1.85, 1.69, 1.8, 1.75],
        "Salary($)": [3200, 3500, 4000, 2090, 2500, 3600],
    }
)

print("The DataFrame of Employees is:")
print(employees_df, "\n")

corr_df = employees_df.corr()
print("The correlation DataFrame is:")
print(corr_df, "\n")

出力:

The DataFrame of Employees is:
       Name  Age  Weight(KG)  Height(meters)  Salary($)
0  Jonathan   20          65            1.60       3200
1      Will   22          75            1.70       3500
2   Michael   29          80            1.85       4000
3      Liva   20          60            1.69       2090
4       Sia   20          63            1.80       2500
5     Alice   21          70            1.75       3600

The correlation DataFrame is:
                     Age  Weight(KG)  Height(meters)  Salary($)
Age             1.000000    0.848959        0.655252   0.695206
Weight(KG)      0.848959    1.000000        0.480998   0.914861
Height(meters)  0.655252    0.480998        1.000000   0.285423
Salary($)       0.695206    0.914861        0.285423   1.000000

これは、DataFrame 内の各列と他の列との間の相関値を持つ DataFrame を生成します。

相関値は数値を持つ列間でのみ計算されます。デフォルトでは、corr() メソッドは相関係数を計算するために Pearson メソッドを使用します。また、corr メソッドで method パラメータの値を指定することで、Kendallspearman などの他の方法を使って相関係数を計算することもできます。

Matplotlib.pyplot.matshow() メソッドを使って Pandas の相関行列を可視化する

import pandas as pd
import matplotlib.pyplot as plt

employees_df = pd.DataFrame(
    {
        "Name": ["Jonathan", "Will", "Michael", "Liva", "Sia", "Alice"],
        "Age": [20, 22, 29, 20, 20, 21],
        "Weight(KG)": [65, 75, 80, 60, 63, 70],
        "Height(meters)": [1.6, 1.7, 1.85, 1.69, 1.8, 1.75],
        "Salary($)": [3200, 3500, 4000, 2090, 2500, 3600],
    }
)

corr_df = employees_df.corr(method="pearson")

plt.matshow(corr_df)
plt.show()

出力:

matshow 法を用いて、相関行列を可視化します.

これは、Matplotlib.pyplot パッケージの matshow() 関数を用いて employees_df DataFrame から生成された相関行列をプロットします。

seaborn.heatmap() メソッドを用いて Pandas の相関行列を可視化する

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

employees_df = pd.DataFrame(
    {
        "Name": ["Jonathan", "Will", "Michael", "Liva", "Sia", "Alice"],
        "Age": [20, 22, 29, 20, 20, 21],
        "Weight(KG)": [65, 75, 80, 60, 63, 70],
        "Height(meters)": [1.6, 1.7, 1.85, 1.69, 1.8, 1.75],
        "Salary($)": [3200, 3500, 4000, 2090, 2500, 3600],
    }
)

corr_df = employees_df.corr(method="pearson")

plt.figure(figsize=(8, 6))
sns.heatmap(corr_df, annot=True)
plt.show()

出力:

seaborn のヒートマップ法を使用して相関行列を可視化する

これは、seaborn パッケージの heatmap() 関数を用いて employees_df DataFrame から生成した相関行列をプロットします。

DataFrame.style プロパティを用いて相関行列を可視化する

import pandas as pd

employees_df = pd.DataFrame(
    {
        "Name": ["Jonathan", "Will", "Michael", "Liva", "Sia", "Alice"],
        "Age": [20, 22, 29, 20, 20, 21],
        "Weight(KG)": [65, 75, 80, 60, 63, 70],
        "Height(meters)": [1.6, 1.7, 1.85, 1.69, 1.8, 1.75],
        "Salary($)": [3200, 3500, 4000, 2090, 2500, 3600],
    }
)

corr_df = employees_df.corr(method="pearson")

corr_df.style.background_gradient(cmap="coolwarm")

出力:

DataFrame オブジェクトの style プロパティを使用して相関行列を可視化する

corr_df DataFrame オブジェクトの style プロパティは Styler オブジェクトを返します。Styler オブジェクトの background_gradient プロパティを利用することで、DataFrame オブジェクトを可視化することができます。

このメソッドは IPython ノートブックの中でしか図を生成できません。

著者: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn