( New ) 新連載スタート!2人の会話形式でPythonを学ぶ「週末Pythonゆる講座」はこちら ▶▶

【Python】DataFrameを見やすくする方法|style

DataFrameを見やすくする方法

今回はPythonのDataFrameに対してヒートマップハイライトデータバーを用いて、

テーブルを見やすいように可視化する方法をご紹介します

DataFrameは基本的に「テーブル」の形式のみで、数値の大小はぱっと見ただけでは分かりません

そして人間は「文字」としての数値の大小を測ることが非常に苦手です

Pythonのヒートマップ

上記テーブルで数値が12個配置されていますが、一瞬同じような数列のように見えます

しかし、色を付けてみると一つの値のみ、飛ぶ抜けて高いことが分かります

このようにDataFrameに対してstyleを使い、データのカラーリングやデータバーの付与を行います

Excelでは条件付き書式

今回ご紹介する内容は、Excelでは条件付き書式と呼ばれている機能です

Excelが使える方は、こちらの設定に親しみがある方が多いかもしれませんね

Excelの条件付き書式の例

事前準備

PandasDataFrameを利用するため事前にインストールしておきます

また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
Pythonのサンプルデータ

styleの利用方法

DataFrameに色やデータバーを付けるはstyleというメソッドを利用します

今回は3種類の可視化方法をご紹介します

  1. ヒートマップ(background_gradient)
  2. ハイライト(highlight_null / max / min)
  3. データバー(bar)

※全てstyleを前に付ける必要があるのでお気を付けください!

ヒートマップ(background_gradient)

style.background_gradientを利用すると、ヒートマップを作成することができます

細かい調整ができないのが難点ですが、一発で数値の高低を可視化することができます

df.style.background_gradient()
df.style.background_gradient()

色を変更する

パラメータでcolorを設定すると、ヒートマップの色を変更することができます

色はSeabornカラーパレットを参照してください(大文字から始まる色+”s”が多い)

df.style.background_gradient(cmap='Reds')
df.style.background_gradient(cmap='Reds')

集計する軸を変更する

axisを設定するとヒートマップの大小を基準とする軸を決めることができます

  • axis = 0(列を基準にカラーリング) ※デフォルト
  • axis = 1(行を基準にカラーリング)
  • axis = None(全体を基準にカラーリング)
Pythonのaxisの説明図

ヒートマップの場合は全体を比較するケースが多いと思いますので、axis = None の設定をお勧めします

df.style.background_gradient(axis=None, cmap='Reds')
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()
df.style.highlight_null()

最大値(max)

続いてstyle.highlight_maxを利用して、最大値をハイライトします

※デフォルトで列を基準にしているため、各列で最大値を算出されます

df.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')

せっかくなので最大値・最小値をハイライトしてみます(分かりやすいように色を変えて)

df.style.highlight_max(color='skyblue').highlight_min(color='tomato')
df.style.highlight_max(color='skyblue').highlight_min(color='tomato')

集計する軸を変更する

axisを設定するとハイライトの大小を基準とする軸を決めることができます

  • axis = 0(列を基準にハイライト) ※デフォルト
  • axis = 1(行を基準にハイライト)
  • axis = None(全体を基準にハイライト)
Pythonのaxisの説明図

axis = None を指定したときは、全体の中の最大値・最小値を探すため、最も高い・低い値がハイライトされます

df.style.highlight_max(axis=None, color='skyblue')
df.style.highlight_max(axis=None, color='skyblue')

データバー(bar)

最後にstyle.barを設定することで、DataFrame内にデータバー(棒グラフ)を設定する方法をご紹介します

特にパラメータを設定しなくても、簡単に設定が可能です

df.style.bar()
df.style.bar()

マイナスの値があるときの設定

データバーではalignというパラメータが存在し、中央の軸を「左・中央・右」のどれかに設定をすることができます

デフォルトでは「左」になっているため、マイナスの値が存在する場合は「中央:mid」を指定しましょう

またカラーも2色指定することをお勧めします(下記で説明)

df.style.bar(align='mid')
df.style.bar(align='mid')

色を変更する

ハイライトと同じようにcolorを設定することで色を変えることができます

df.style.bar(color='lightgreen')
df.style.bar(color='lightgreen')

先ほどのalignと組み合わせて、マイナスの値の色を変更します

マイナスの値は「赤:tomato」、プラスの値は「青:skyblue」を設定してみます

df.style.bar(align='mid', color=['tomato','skyblue'])
df.style.bar(align='mid', color=['tomato','skyblue'])
matplotlibの色について

matplotlibで設定する色合いに関して、単純に「青・赤・緑」を設定してしまうと強烈な色になってしまいます

少し薄い色にしてあげることで、より見やすく可視化することができます

matplotlibの色合いの違い

集計する軸を変更する

axisを設定するとデータバーの大小を基準とする軸を決めることができます

  • axis = 0(列を基準にデータバーを作成) ※デフォルト
  • axis = 1(行を基準にデータバーを作成)
  • axis = None(全体を基準にデータバーを作成)
Pythonのaxisの説明図

axis = None を指定したときは、全体を基準にデータバーの大小が決まります

df.style.bar(axis=None, align='mid', color=['tomato','skyblue'])
df.style.bar(axis=None, align='mid', color=['tomato','skyblue'])

まとめ

今回はPythonのDataFrameに対してヒートマップハイライトデータバーを用いて、

テーブルを見やすいように可視化する方法をご紹介します

しっかりとグラフ化して可視化したい場合は、下記記事をご覧ください

【Python】一瞬で書けるグラフ作成|matplotlib 【Python】seabornで綺麗なグラフ作成を!たった1行で書けます
お気に入り登録お願いします

コメントを残す

メールアドレスが公開されることはありません。