いろいろ倉庫

KNIME、EXCEL、R、Pythonなどの備忘録

【Python】PandasのDataFrameの特定の列に色をつけたい

・お題:PandasのDataFrameの特定の列やセルに色を付けて、表を見やすくしたい。

 

・公式サイトを参考にした。正しいことは公式サイトを参照していただきたい。

pandas.pydata.org

・とりあえず、データセットを作成する。

import pandas as pd
import numpy as np
df=pd.DataFrame({"No":[1,2,3],
                "Code":["A","B","C"],
                "Score":[1.23,np.nan,3.45]})

・何もしなければ、dfは以下のようになる。

・例えば、Codeの列を黄色くしてみる。

df.style.set_properties(**{"background-color":"yellow"},subset=["Code"])

#**がなんのためについているのか分からない。辞書に**を付けるとアンパックされるイメージがあるが。。

・背景色以外のプロパティを与えてやれば、もっといろいろ変更できる。例えば、フォント、文字の色、文字の大きさも変えてみる。

df.style.set_properties(**{"background-color":"yellow",
                           "font-family":"Times New Roman",
                           "color": "red",
                           "font-size":"2em"},
                        subset=["Code"])

・条件にあてはまるセルの色だけ変えることもできる。例えば、nanのセルを赤くしてみる。

df.style.highlight_null("red")

・関数で条件設定し、Noの列のうち、2未満のセルを水色にしてみる。

df.style.applymap( lambda x : "background-color : lightblue" if x < 2 else "", subset =  ["No"])

・特定の列の最大値のセルを赤色にしてみる。

df.style.highlight_max( color = "red", axis = 0, subset = ["Score"] )

・ヒートマップっぽく、背景色を数値の大小で塗ってみる。

df.style.background_gradient( cmap = "bwr" )

・文字の方を数値の大小で塗ってみる。

df.style.text_gradient( cmap = "bwr" )



 

おわり。