Pandasのcorr
メソッドは、DataFrameやSeriesの相関係数(correlation coefficient)を計算するためのメソッドです。
データ解析や統計分析では「変数同士の関係」を把握するのに非常に重要で、特に数値データの特徴量間の関係を調べる際によく使われます。
以下で詳しく解説します。
目次
基本的な役割
DataFrame.corr()
は、DataFrameの数値列どうしの相関係数を計算し、相関行列(correlation matrix)を返します。Series.corr(other)
は、あるSeriesと別のSeriesとの相関を返します。
相関係数の種類
Pandasのcorr
では、以下の3種類の相関係数を選択できます。
- Pearson(ピアソン相関係数, デフォルト)
- 直線的な関係を測る。
- 値の範囲は
-1 ~ 1
- 1 → 完全な正の相関
- -1 → 完全な負の相関
- 0 → 相関なし
- デフォルトで
corr(method="pearson")
となります。
- Kendall(ケンドールの順位相関係数)
- 順序データや外れ値が多い場合に有効。
- ランク(順位)の一致度を測る。
- 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メソッドについてでした。
最後までお読みいただき、ありがとうございました。