6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

df.corr()を一列に変換する [pandas]

Last updated at Posted at 2019-10-23

例えば、irisデータセットに対してpandasのcorrメソッドを使うと、こんな風に相関係数行列が出てくると思います。

python
df.corr(method='pearson')
スクリーンショット 2019-10-23 午後2.45.48.png

ただ、相関係数のランキングを作りたい場合は、こんな感じで1列に並んでいた方が扱いやすかったりします。

スクリーンショット 2019-10-23 午後2.46.56.png

そこで、相関係数を上の様に出力する関数を作ってみました。

python
import numpy as np
import pandas as pd

# 引数は、相関係数を作成したいdf
def calc_corr(df):
    # 相関係数行列を作成
    corr_mat = df.corr(method='pearson')

    # 行(列)サイズを取得
    n = corr_mat.shape[0]
    
    # 項目名を取得
    columns = corr_mat.columns.tolist()
    
    # 変数名1, 変数名2, 値を一つの配列に入れたものを作成
    # 相関係数行列の下三角部分(対角成分除く)だけ
    corr_ary = []
    var1_ary = []
    var2_ary = []
    for i in range(n):
        for j in range(i):
            if i == j:
                continue
            corr_ary.append(corr_mat.iloc[i,j])
            var1_ary.append(columns[i])
            var2_ary.append(columns[j])

    # dfにする
    df_new = pd.DataFrame([])
    df_new["var1"] = var1_ary
    df_new["var2"] = var2_ary
    df_new["corr"] = corr_ary
    
    return df_new

使用例は以下の通りです。

python
from sklearn import datasets

iris = datasets.load_iris()
df = pd.DataFrame(data=iris['data'], columns=iris['feature_names'])
corr(df)

これでさっきのdfが得られます。

スクリーンショット 2019-10-23 午後2.46.56.png
6
7
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?