Pythonでヒートマップ作成|Seabornによるデータ可視化手法解説

こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!

こんな方におすすめ!
  • Pythonでヒートマップを作成したい。
  • Seabornをヒートマップ作成メソッドを用いたプログラミング手法を知りたい。
目次

【Python】Seabornとは?

SeabornとはPythonライブラリであり、グラフの作成やヒートマップの可視化を目的として用いられます。

SeabornはMatplotlibと同様人気が高いデータ可視化ライブラリです。特に、seabornを用いたグラフや表はデザイン性に優れていることが魅力の1つと言えます。

Seabornにはヒートマップを可視化できるSeaborn.heatmap()メソッドが用意されており、本記事ではこのメソッドの使い方について詳しく解説します。

Seabornを用いたヒートマップ作成メソッドのひな型

seaborn.heatmap()メソッドのひな型コードを示します。まず引数の概要について確認しましょう。

Seaborn.heatmapメソッド

seaborn.heatmap(data, 
                vmin=None, 
                vmax=None, 
                cmap=None, 
                center=None, 
                robust=False,
                annot=None, 
                fmt='.2g', 
                annot_kws=None, 
                linewidths=0,
                linecolor='white', 
                cbar=True, 
                cbar_kws=None, 
                cbar_ax=None,
                square=False, 
                ax=None, 
                xticklabels=True, 
                yticklabels=True,
                mask=None, 
                **kwargs,
                )

パラメータ(引数)の説明

スクロールできます
引数名概要デフォルト値
dataヒートマップを表現する2次元のデータ必須
vminカラーマップの最小値None
vmaxカラーマップの最大値None
cmapMatplotlibのオブジェクトを指定し、カラーマップをデザインNone
centercolormapの中心値None
robustTrue:カラーマップの外れ値の影響を考慮(vmin, vmax=Noneの場合)False
annotTrue:セル上に値出力None
annot_kwsテキストプロパティを指定し、セル上の出力値の書式デザイン
(annot=Trueの場合)
None
fmtTrue:文字列フォーマットを指定‘.2g’
linewidths枠線の太さ0
linecolor枠線の色‘white’
cbarTrue:カラーバーを出力True
cbar_kwsカラーバーの書式デザインNone
cbar_axカラーバーの軸指定None
squareTrue:正方形のマップ出力False
axマップの軸を指定None
xticklabelsTrue:pandas.DataFrameの列名をX軸として出力True
yticklabelsTrue:pandas.DataFrameの列名をY軸として出力True
mask値をマスクするセルを指定None
kwargsその他キーワード引数を指定

【Python実践】Seabornでヒートマップを作成

それでは実際にPythonとSeabornを用いてヒートマップを可視化してみましょう。

データセットの説明

データセットには、Boston Housingというデータセットを活用します。

1970年代後半におけるボストンの住宅情報とその地域における環境をまとめたデータセットであり、住宅価格の予測を目的とした回帰モデル作成のチュートリアルによく利用されます。

Boston Housingデータセットの説明変数および目的変数の概要はそれぞれ以下になります。

説明変数一覧

特徴量名概要
CRIM(地域人工毎の)犯罪発生率
ZN25,000平方フィート以上の住宅区画の割合
INDUS(地域人工毎の)非小売業の土地面積の割合
CHASチャールズ川沿いに立地しているかどうか(該当の場合は1、そうでない場合は0)
NOX窒素酸化物の濃度(単位:pphm)
RM平均部屋数/一戸
AGE1940年よりも古い家の割合
DIS5つのボストン雇用センターまでの重み付き距離
RAD主要な高速道路へのアクセス指数
TAX10,000ドルあたりの所得税率
PTRATIO(地域人工毎の)学校教師1人あたりの生徒数
B(地域人工毎の)アフリカ系アメリカ人居住者の割合
LSTAT低所得者の割合

目的変数一覧

特徴量名概要
MEDV住宅価格の中央値(単位 $1,000)

データの読み込み

前述のデータを用いて変数間の相関係数をヒートマップとして可視化します。下記を実行しデータを読み込みましょう。

# データ前処理
import numpy as np
import pandas as pd

# データ可視化
import seaborn

# データセット読込
from sklearn.datasets import load_boston
boston = load_boston()

# DataFrame作成
df = pd.DataFrame(boston.data)
df.columns = boston.feature_names
df["MEDV"] = boston.target

# 相関係数(今回ヒートマップを描くためのデータとして利用)
# ndarray形式に変換可能な2次元のデータセットを用いる
corr = np.corrcoef(df.values.T)

ヒートマップを作成

# ヒートマップ
hm = seaborn.heatmap(corr, 
                     cmap=None, 
                     annot=True, 
                     fmt='.2g', 
                     annot_kws={'size': 8}, 
                     linewidths=0,
                     linecolor='white', 
                     cbar=True,  
                     xticklabels=list(df.columns),
                     yticklabels=list(df.columns),
                     )

# グラフ可視化
plt.tight_layout()
plt.show()

【参考】Pythonでのデータ前処理・分析・可視化

当サイトではPythonを用いた「データ前処理手法」「データ分析」「グラフや表を用いた可視化」手法について幅広く解説しております。AI・機械学習にも応用できる内容となっておりますため、興味がある方は併せてご確認下さい。

Pythonを活用したデータ処理・分析手法一覧



【参考】Pythonとは・できること一覧

最後に

この記事が気に入ったら
フォローしてね!

本記事をシェア!
目次