Jupyter notebook(Python3)を使ってみようを使ってみようと思っても慣れていないうちは、どうしても処理に躓いてしまうものです。
例えば。Pythonのpandas機能にてあるデータの列間の相関係数を計算したい場合や、その相関関係をヒートマップにて可視化させるにはどのような処理をすればいいのでしょうか。
ここでは、pandasにて列と列同士の相関係数を求める方法やpythonにて相関関係のヒートマップを可視化させる方法について解説していきます。
Pandas(python)にて相関係数を計算する方法【corr関数】
まずはcsvを読みこみ、以下のようなデータフレームが得られたとします。
このデータのみではどのような相関があるのかイメージがつきにくいですよね。
そこでまずは、pandas(python)におけるcorr関数を使用することで、列間の相関係数を計算していきます。
コードは
df.corr()
だけでいいです。
import os
os.chdir(“C:\\sample”)
import pandas as pd
df = pd.read_csv(“sample13.csv”,encoding=”SHIFT_JIS”)
df.corr()
これだけで相関係数を求めることができました。
xとyは相関係数1(かなり強い正の相関)、xとzは相関係数-1(かなり強い負の相関)であることが理解できます(yとzもかなり強い負の相関)。
念のため、以下のサンプルコードも追加して「xとy」「xとz」を関係プロットしてみましょう。
x = df[“x”]
y = df[“y”]
z = df[“z”]
plt.scatter(x,y)
plt.scatter(x,z)
相関係数が各々1、-1と綺麗な正の相関、負の相関になっていることがこれで理解できるでしょう。
Pandas(python)にて相関係数のヒートマップで可視化させる方法【相関関係】
なお、pythonにて相関関係をヒートマップ化させるためには、scikit-learnというライブラリを活用していきます。
from sklearn import datasets
df.corr().style.background_gradient(axis=None)
と入れるだけで、簡単に相関係数を元にしたヒートマップが作成、可視化させることができます。
以下の通りです。
なお、色みの調整を行いたい場合は以下のようなビビッドカラーでなどと引数にて指定することによっても対応できることを覚えておくといいです。
具体的には、正の相関が明るく、負の相関が暗めにでます。
import os
os.chdir(“C:\\sample”)
from sklearn import datasets
import pandas as pd
df = pd.read_csv(“sample13.csv”,encoding=”SHIFT_JIS”)
df.corr().style.background_gradient(axis=None, cmap=’viridis’)
なお、今回のデータでは列数が少ないため、極端なヒートマップでの可視化となってしまいましたが、量が増えるとそれっぽいものとなるためにぜひ試してみてください。
まとめ Pandas(Pythom)にて相関係数の計算やヒートマップを作成する方法
ここでは、pandas(python)にて相関係数を計算する方法、ヒートマップで可視化する方法について解説しました。
・相関係数はcorr関数で対応できる
・ヒートマップはscikit-learnで簡単に処理できる
ことを覚えておきましょう。
コメント