スポンサーリンク

【Python】Pandas データフレームで相関係数を計算する方法

記事内に広告が含まれています。

相関係数は、2つの変数間の関係性を示す統計量です。

Pythonのデータ分析ライブラリであるpandasを使用することで、簡単に計算することができます。

pandasを使った相関係数の計算方法をまとめます。

スポンサーリンク

相関係数とは?

相関係数は、2つの変数間の線形関係を示す値で、以下の特徴を持ちます。

  • 値の範囲は -1 から 1
  • 1 に近い値:正の相関(片方が増えるともう片方も増える)。
  • -1 に近い値:負の相関(片方が増えるともう片方は減る)。
  • 0 に近い値:相関がほとんどない。
スポンサーリンク

基本的な相関係数の計算

データフレームを用意する

まず、例として2つの変数XYを持つデータフレームを作成します。

import pandas as pd

# サンプルデータ
data = {
    'X': [1, 2, 3, 4, 5],
    'Y': [2, 4, 6, 8, 10]
}

df = pd.DataFrame(data)
print(df)

出力

   X   Y
0  1   2
1  2   4
2  3   6
3  4   8
4  5  10

相関係数を計算する方法

pandasのcorrメソッドを使用すると、簡単に相関係数を計算できます。

# 相関係数の計算
correlation = df.corr()
print(correlation)

出力

     X    Y
X  1.0  1.0
Y  1.0  1.0

上記の結果では、XYの相関係数が1.0となっています。

これは、2つの変数が完全に正の相関を持っていることを意味します。

特定の列間の相関係数を計算する

データフレーム全体ではなく、特定の2列間の相関係数を計算したい場合は、以下のように記述します。

# XとYの相関係数を計算
correlation_xy = df['X'].corr(df['Y'])
print(round(correlation_xy, 2))

出力

1.0

相関係数の種類を変更する

デフォルトでは、pandasのcorrメソッドはピアソンの相関係数を計算します。

しかし、以下の種類も選択可能です。

  • ピアソン相関係数(デフォルト)
    method='pearson'
  • スピアマン相関係数
    method='spearman'
  • ケンドールの順位相関係数
    method='kendall'

スピアマン相関係数の例

# スピアマン相関係数の計算
correlation_spearman = df.corr(method='spearman')
print(correlation_spearman)

ケンドール相関係数の例

# ケンドール相関係数の計算
correlation_kendall = df.corr(method='kendall')
print(correlation_kendall)

実データでの使用例

CSVファイルからデータを読み込む

現実的な使用例として、CSVファイルから読み込んだデータを使う例を見てみましょう。

# CSVファイルを読み込む
df = pd.read_csv('data.csv')

# 全列間の相関係数を計算
correlation_matrix = df.corr()
print(correlation_matrix)

ヒートマップで相関を視覚化する

相関係数を視覚的に理解するために、ヒートマップを作成することも可能です。

以下は、seabornを使用した例です。

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

# CSVファイルを読み込む
df = pd.read_csv('data.csv')

# 全列間の相関係数を計算
correlation_matrix = df.corr()

# ヒートマップの描画
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm')
plt.title('Correlation Matrix')
plt.show()

まとめ

pandasを使用することで、以下のような相関係数の計算が簡単に行えます。

  • df.corr()でデータフレーム全体の相関を計算。
  • df['列1'].corr(df['列2'])で特定の列間の相関を計算。
  • 相関の種類(ピアソン、スピアマン、ケンドール)を指定可能。
  • ヒートマップで視覚化することで、データの関係性をより直感的に理解。
スポンサーリンク
Python
著者SNS
タイトルとURLをコピーしました