PythonのPandasのcorrメソッドについて

Python,イメージ

AI実装検定のご案内

Pandasのcorrメソッドは、DataFrameやSeriesの相関係数(correlation coefficient)を計算するためのメソッドです。

データ解析や統計分析では「変数同士の関係」を把握するのに非常に重要で、特に数値データの特徴量間の関係を調べる際によく使われます。

以下で詳しく解説します。

目次

基本的な役割

  • DataFrame.corr() は、DataFrameの数値列どうしの相関係数を計算し、相関行列(correlation matrix)を返します。
  • Series.corr(other) は、あるSeriesと別のSeriesとの相関を返します。

相関係数の種類

Pandasのcorrでは、以下の3種類の相関係数を選択できます。

  1. Pearson(ピアソン相関係数, デフォルト)
    • 直線的な関係を測る。
    • 値の範囲は -1 ~ 1
      • 1 → 完全な正の相関
      • -1 → 完全な負の相関
      • 0 → 相関なし
    • デフォルトで corr(method="pearson") となります。
  2. Kendall(ケンドールの順位相関係数)
    • 順序データや外れ値が多い場合に有効。
    • ランク(順位)の一致度を測る。
  3. Spearman(スピアマンの順位相関係数)
    • 値の大小関係(単調増加・減少)に着目。
    • データが線形でなくても使える。

基本的な使い方

DataFrameでの利用

import pandas as pd

df = pd.DataFrame({
    "A": [1, 2, 3, 4, 5],
    "B": [2, 4, 6, 8, 10],
    "C": [5, 4, 3, 2, 1]
})

# デフォルトは Pearson
print(df.corr())

Seriesでの利用

s1 = pd.Series([1, 2, 3, 4, 5])
s2 = pd.Series([2, 4, 6, 8, 10])

print(s1.corr(s2))

引数の詳細

  • method : {"pearson", "kendall", "spearman"}
    相関係数の種類を指定(デフォルトは "pearson"
  • min_periods : int, optional
    相関を計算するために必要な最小の有効値数を指定。
    (欠損値NaNがある場合に有効)

応用的な使い方

欠損値がある場合

df = pd.DataFrame({
    "A": [1, 2, None, 4, 5],
    "B": [2, None, 6, 8, 10]
})

print(df.corr(min_periods=2))
  • NaNがあっても、min_periodsを満たせば相関係数が計算されます。

相関ヒートマップの可視化

import seaborn as sns
import matplotlib.pyplot as plt

corr = df.corr()
sns.heatmap(corr, annot=True, cmap="coolwarm")
plt.show()
  • 相関関係を直感的に把握可能。
  • Webマーケティングのデータ解析(アクセス数・クリック率・売上の関係など)で非常に有効です。

特定列と全体の相関

print(df.corr()["A"])
  • A列と他の列の相関を一気に取り出せます。

注意点

  • 相関 ≠ 因果関係
    相関が高いからといって、一方が他方を引き起こしているとは限らない。
  • 外れ値の影響
    Pearson相関は外れ値に敏感。外れ値が多いときはSpearmanやKendallを使うと良い。
  • カテゴリデータには使えない
    数値列のみが対象。カテゴリデータはエンコードが必要。

まとめ

  • corrは「列同士の関係性」を数値化してくれる強力なメソッド。
  • デフォルトはPearson相関だが、順位相関(Spearman, Kendall)も選べる。
  • 欠損値処理や可視化と組み合わせると、データ解析の理解が深まる。

以上、PythonのPandasのcorrメソッドについてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次