目次
DataFrameを見やすくする方法
今回はPythonのDataFrameに対してヒートマップやハイライト、データバーを用いて、
テーブルを見やすいように可視化する方法をご紹介します
DataFrameは基本的に「テーブル」の形式のみで、数値の大小はぱっと見ただけでは分かりません
そして人間は「文字」としての数値の大小を測ることが非常に苦手です
上記テーブルで数値が12個配置されていますが、一瞬同じような数列のように見えます
しかし、色を付けてみると一つの値のみ、飛ぶ抜けて高いことが分かります
このようにDataFrameに対してstyleを使い、データのカラーリングやデータバーの付与を行います
今回ご紹介する内容は、Excelでは条件付き書式と呼ばれている機能です
Excelが使える方は、こちらの設定に親しみがある方が多いかもしれませんね
事前準備
PandasのDataFrameを利用するため事前にインストールしておきます
またNumpyも準備しておきましょう
import numpy as np
import pandas as pd
さらにサンプルデータとして下記を設定しておきましょう
np.random.seed(0) # 本サイトと同じ数値になるように設定
df = pd.DataFrame(np.random.randn(4,3), columns=['A','B','C'])
df.iloc[1,1] = np.nan # NULLを設定
df
styleの利用方法
DataFrameに色やデータバーを付けるはstyleというメソッドを利用します
今回は3種類の可視化方法をご紹介します
- ヒートマップ(background_gradient)
- ハイライト(highlight_null / max / min)
- データバー(bar)
※全てstyleを前に付ける必要があるのでお気を付けください!
ヒートマップ(background_gradient)
style.background_gradientを利用すると、ヒートマップを作成することができます
細かい調整ができないのが難点ですが、一発で数値の高低を可視化することができます
df.style.background_gradient()
色を変更する
パラメータでcolorを設定すると、ヒートマップの色を変更することができます
色はSeabornのカラーパレットを参照してください(大文字から始まる色+”s”が多い)
df.style.background_gradient(cmap='Reds')
集計する軸を変更する
axisを設定するとヒートマップの大小を基準とする軸を決めることができます
- axis = 0(列を基準にカラーリング) ※デフォルト
- axis = 1(行を基準にカラーリング)
- axis = None(全体を基準にカラーリング)
ヒートマップの場合は全体を比較するケースが多いと思いますので、axis = None の設定をお勧めします
df.style.background_gradient(axis=None, cmap='Reds')
ハイライト(highlight_null / max / min)
style.highlightを利用することで、条件に当てはまる場合のみ「ハイライト」されるようになります
条件の設定方法は3種類で、データが無い(null)、最大値(max)、最小値(min)のどれかです
ハイライトよりもシンプルな可視化になります
データが無い(null)
まずはstyle.highlight_nullを利用し、データが無い場合に見つけられるように設定します
df.style.highlight_null()
最大値(max)
続いてstyle.highlight_maxを利用して、最大値をハイライトします
※デフォルトで列を基準にしているため、各列で最大値を算出されます
df.style.highlight_max()
最小値(min)
最後にstyle.highlight_minで最小値に対してハイライトを実施します
df.style.highlight_min()
色を変更する
ヒートマップと同様にcolorを設定することで、ハイライトの色合いを変えることができます
※ style.highlight_nullのみnull_colorというパラメータとなります
今度はmatplotlibのカラーパレットを参照してください
df.style.highlight_max(color='skyblue')
せっかくなので最大値・最小値をハイライトしてみます(分かりやすいように色を変えて)
df.style.highlight_max(color='skyblue').highlight_min(color='tomato')
集計する軸を変更する
axisを設定するとハイライトの大小を基準とする軸を決めることができます
- axis = 0(列を基準にハイライト) ※デフォルト
- axis = 1(行を基準にハイライト)
- axis = None(全体を基準にハイライト)
axis = None を指定したときは、全体の中の最大値・最小値を探すため、最も高い・低い値がハイライトされます
df.style.highlight_max(axis=None, color='skyblue')
データバー(bar)
最後にstyle.barを設定することで、DataFrame内にデータバー(棒グラフ)を設定する方法をご紹介します
特にパラメータを設定しなくても、簡単に設定が可能です
df.style.bar()
マイナスの値があるときの設定
データバーではalignというパラメータが存在し、中央の軸を「左・中央・右」のどれかに設定をすることができます
デフォルトでは「左」になっているため、マイナスの値が存在する場合は「中央:mid」を指定しましょう
またカラーも2色指定することをお勧めします(下記で説明)
df.style.bar(align='mid')
色を変更する
ハイライトと同じようにcolorを設定することで色を変えることができます
df.style.bar(color='lightgreen')
先ほどのalignと組み合わせて、マイナスの値の色を変更します
マイナスの値は「赤:tomato」、プラスの値は「青:skyblue」を設定してみます
df.style.bar(align='mid', color=['tomato','skyblue'])
matplotlibで設定する色合いに関して、単純に「青・赤・緑」を設定してしまうと強烈な色になってしまいます
少し薄い色にしてあげることで、より見やすく可視化することができます
集計する軸を変更する
axisを設定するとデータバーの大小を基準とする軸を決めることができます
- axis = 0(列を基準にデータバーを作成) ※デフォルト
- axis = 1(行を基準にデータバーを作成)
- axis = None(全体を基準にデータバーを作成)
axis = None を指定したときは、全体を基準にデータバーの大小が決まります
df.style.bar(axis=None, align='mid', color=['tomato','skyblue'])
まとめ
今回はPythonのDataFrameに対してヒートマップやハイライト、データバーを用いて、
テーブルを見やすいように可視化する方法をご紹介します
しっかりとグラフ化して可視化したい場合は、下記記事をご覧ください
【Python】一瞬で書けるグラフ作成|matplotlib 【Python】seabornで綺麗なグラフ作成を!たった1行で書けます