[pandas][corr] 相関マトリックスを表示

Python in Excel 入門 - corr02 kendall コアライブラリ
method="kendall" の例
この記事は約4分で読めます。

pandas の corr メソッドを使って、相関マトリックスを作成するサンプルコードを紹介します。

2023年10月現在、Python in Excel は Microsoft 365 Insider Program のベータチャネルを選択することによって使用できるベータ版のExcelでのみ利用可能です。
ベータ版のExcelのインストール・初期設定方法は以下で詳しく紹介しています。

出力結果例

以下のような結果がスピルして表示されます。

Python in Excel 入門 - corr01 pearson
method=”pearson” の例

corr メソッドの構文

DataFrame.corr([method, min_periods, numeric_only])
戻り値DataFrame
引数説明
method
(任意)
string or
関数
選択肢:
・”pearson”(ピアソンの積率相関係数)
・”kendall”(ケンドールの順位相関係数)
・”spearman”(スピアマンの順位相関係数)
・関数を指定
デフォルト:”pearson”
min_periods
(任意)
int列のペアごとに必要な観測値の最小数
ピアソン相関とスピアマン相関でのみ使用可
デフォルト:1
numeric_only
(任意)
boolfloat、int、bool データのみを含める
デフォルト:True

サンプルコード

サンプルデータ
データが150件、名称が「IrisDataSet2」のテーブルを使用して説明します。

Python in Excel 入門 - describe4
サンプルデータを取得する方法は、ここを展開してください。
サンプルデータを取得する手順
  • 1
    「数式」タブ→「Pythonの挿入」ボタン→「Pythonサンプルを試す」をクリック
    Python in Excel 入門 - sample1
  • 2
    Excelウィンドウ右側に表示されたペーンの「サンプルの挿入」をクリック
    Python in Excel 入門 - sample2
  • 3
    サンプルデータのシートが追加されます
    Python in Excel 入門 - sample3

引数なし

sample_df = xl("IrisDataSet2[#すべて]", headers=True)
sample_df.corr()
# 以下と同じ結果を得られる
# sample_df.corr(method="pearson", min_periods=1, numeric_only=True)

結果 相関マトリックスがスピルして表示されます。

Python in Excel 入門 - corr01 pearson

処理結果が表示されない場合は、Python出力の種類を「Excelの値」に変更してください。

Python in Excel 入門 - kihon7

引数 method を指定

sample_df = xl("IrisDataSet2[#すべて]", headers=True)
sample_df.corr(method="pearson")

結果 ピアソンの積率相関係数を用いた結果

Python in Excel 入門 - corr01 pearson
method=”pearson” の例
sample_df = xl("IrisDataSet2[#すべて]", headers=True)
sample_df.corr(method="kendall")

結果 ケンドールの順位相関係数を用いた結果

Python in Excel 入門 - corr02 kendall
method=”kendall” の例
sample_df = xl("IrisDataSet2[#すべて]", headers=True)
sample_df.corr(method="spearman")

結果 スピアマンの順位相関係数を用いた結果

Python in Excel 入門 - corr03 spearman
method=”spearman” の例

引数 method に関数を指定

# 関数を定義(引数に1次元配列を2つ取り、戻り値がfloat)
def histogram_intersection(a, b):
    v = np.minimum(a, b).sum().round(decimals=1)
    return v

sample_df = xl("IrisDataSet2[#すべて]", headers=True)
sample_df.corr(method=histogram_intersection) # 関数(名)を渡す

結果

Python in Excel 入門 - corr05 callable

引数 numeric_only を指定

sample_df = xl("IrisDataSet2[#すべて]", headers=True)
sample_df.corr(numeric_only=False)

結果 この引数の用途がよく分からない…

Python in Excel 入門 - corr04
numeric_only=False の例

注意点

numeric_only 引数のデフォルト値は、pandasのバージョン2.0.0から False に変わったようですが、2023年11月現在、Python in Excel で使用されるクラウド上の pandasのバージョンは「1.5.3」なので、numeric_only 引数のデフォルト値は True です。

pandasのバージョンは1.5.3

クラウド上のライブラリのバージョンアップは今後どうなるのかよく分からないですが、バージョンアップされても問題なく動作するように作っておきたいというしっかり者の皆さんは、numeric_only 引数を明示的に指定しておきましょう。

sample_df.corr(numeric_only=True) # 任意引数だけど明示的に指定しておく

参考

タイトルとURLをコピーしました