概要
pandas の Styler オブジェクトで Jupyter Notebook に表示されるテーブルの見た目をカスタマイズする方法について解説します。
Styler オブジェクト
DataFrame.style
属性で DataFrame のスタイルを表す Styler オブジェクトを取得できます。
A | B | C | D | E | |
---|---|---|---|---|---|
a | 11 | NaN | 15 | 4.0 | 5 |
b | 2 | 12.0 | 10 | 8.0 | 16 |
c | 17 | 24.0 | 14 | 13.0 | 23 |
d | 19 | 6.0 | 18 | NaN | 7 |
e | 3 | 9.0 | 20 | 21.0 | 1 |
<class 'pandas.io.formats.style.Styler'>
Styler オブジェクトの関数は、スタイルを変更した Styler オブジェクトを返すようになっています。Jupyter Notebook の場合、このオブジェクトを DataFrame と同様にそのまま出力できます。
<class 'pandas.io.formats.style.Styler'>
A | B | C | D | E | |
---|---|---|---|---|---|
a | 11 | nan | 15 | 4.000000 | 5 |
b | 2 | 12.000000 | 10 | 8.000000 | 16 |
c | 17 | 24.000000 | 14 | 13.000000 | 23 |
d | 19 | 6.000000 | 18 | nan | 7 |
e | 3 | 9.000000 | 20 | 21.000000 | 1 |
複数の変更を適用する場合は、数珠繋ぎで呼び出せます。
A | B | C | D | E | |
---|---|---|---|---|---|
a | 11 | nan | 15 | 4.000000 | 5 |
b | 2 | 12.000000 | 10 | 8.000000 | 16 |
c | 17 | 24.000000 | 14 | 13.000000 | 23 |
d | 19 | 6.000000 | 18 | nan | 7 |
e | 3 | 9.000000 | 20 | 21.000000 | 1 |
強調表示
欠損値を強調する
Styler.highlight_null()
で欠損値を強調表示できます。
A | B | C | D | E | |
---|---|---|---|---|---|
a | 11 | nan | 15 | 4.000000 | 5 |
b | 2 | 12.000000 | 10 | 8.000000 | 16 |
c | 17 | 24.000000 | 14 | 13.000000 | 23 |
d | 19 | 6.000000 | 18 | nan | 7 |
e | 3 | 9.000000 | 20 | 21.000000 | 1 |
列ごとに最小値を強調する
Styler.highlight_max()
で列ごとに最小値を強調表示できます。
- color: 色
- axis: 適用する方向
- subset: 特定のインデックスにのみ適用する場合は指定する
A | B | C | D | E | |
---|---|---|---|---|---|
a | 11 | nan | 15 | 4.000000 | 5 |
b | 2 | 12.000000 | 10 | 8.000000 | 16 |
c | 17 | 24.000000 | 14 | 13.000000 | 23 |
d | 19 | 6.000000 | 18 | nan | 7 |
e | 3 | 9.000000 | 20 | 21.000000 | 1 |
列ごとに最大値を強調する
Styler.highlight_max()
で列ごとに最大値を強調表示できます。
- color: 色
A | B | C | D | E | |
---|---|---|---|---|---|
a | 11 | nan | 15 | 4.000000 | 5 |
b | 2 | 12.000000 | 10 | 8.000000 | 16 |
c | 17 | 24.000000 | 14 | 13.000000 | 23 |
d | 19 | 6.000000 | 18 | nan | 7 |
e | 3 | 9.000000 | 20 | 21.000000 | 1 |
値の大きさに応じて、背景にバーを表示する
Styler.bar()
で値の大きさに応じて、背景にバーを表示できます。
A | B | C | |
---|---|---|---|
0 | 132 | 0 | -31 |
1 | -107 | -143 | 56 |
2 | -162 | 21 | 67 |
3 | 96 | 10 | 0 |
4 | 145 | 105 | 16 |
5 | -133 | 56 | 139 |
6 | 12 | 120 | 0 |
7 | 35 | 103 | -38 |
8 | 168 | -132 | 142 |
9 | -12 | 63 | -58 |
値の大きさに応じてグラデーションする
Styler.background_gradien()
で列ごとに値の大きさに応じて色分けできます。
- cmap: カラーマップ名
- text_color_threshold: テキストを黒白のどちらで表示するかを判断する際の閾値
- vmin, vmax: カラーマップの値の範囲
A | B | C | D | E | |
---|---|---|---|---|---|
a | 0 | 1 | 2 | 3 | 4 |
b | 5 | 6 | 7 | 8 | 9 |
c | 10 | 11 | 12 | 13 | 14 |
d | 15 | 16 | 17 | 18 | 19 |
e | 20 | 21 | 22 | 23 | 24 |
A | B | C | D | E | |
---|---|---|---|---|---|
a | 0 | 1 | 2 | 3 | 4 |
b | 5 | 6 | 7 | 8 | 9 |
c | 10 | 11 | 12 | 13 | 14 |
d | 15 | 16 | 17 | 18 | 19 |
e | 20 | 21 | 22 | 23 | 24 |
書式を設定する
小数点の表示桁数を設定する
Styler.set_precision()
で小数点以下の表示桁数を設定できます。
A | B | C | D | E | |
---|---|---|---|---|---|
a | 11 | nan | 15 | 4.00 | 5 |
b | 2 | 12.00 | 10 | 8.00 | 16 |
c | 17 | 24.00 | 14 | 13.00 | 23 |
d | 19 | 6.00 | 18 | nan | 7 |
e | 3 | 9.00 | 20 | 21.00 | 1 |
書式を設定する
Styler.format()
で書式を設定できます。
na_rep
で欠損値の表示方法も合わせて設定できます。
A | B | C | D | E | |
---|---|---|---|---|---|
a | 21% | – | 19% | 9% | 10% |
b | 4% | 24% | 13% | 17% | 31% |
c | 33% | 47% | 18% | 28% | 44% |
d | 37% | 12% | 23% | – | 13% |
e | 6% | 18% | 26% | 46% | 2% |
dict を使って列ごとに異なる書式を設定することもできます。
A | B | C | D | E | |
---|---|---|---|---|---|
a | 21% | – | 0.194805 | 0.086957 | 0.096154 |
b | 4% | 23.53% | 0.129870 | 0.173913 | 0.307692 |
c | 33% | 47.06% | 0.181818 | 0.282609 | 0.442308 |
d | 37% | 11.76% | 0.233766 | nan | 0.134615 |
e | 6% | 17.65% | 0.259740 | 0.456522 | 0.019231 |
欠損値の表示方法を設定する
Styler.set_na_rep()
で欠損値の表示方法を設定できます。
A | B | C | D | E | |
---|---|---|---|---|---|
a | 11 | – | 15 | 4.000000 | 5 |
b | 2 | 12.000000 | 10 | 8.000000 | 16 |
c | 17 | 24.000000 | 14 | 13.000000 | 23 |
d | 19 | 6.000000 | 18 | – | 7 |
e | 3 | 9.000000 | 20 | 21.000000 | 1 |
テーブルにタイトルを設定する
Styler.set_caption()
でテーブルにタイトルを設定できます。
A | B | C | D | E | |
---|---|---|---|---|---|
a | 11 | nan | 15 | 4.000000 | 5 |
b | 2 | 12.000000 | 10 | 8.000000 | 16 |
c | 17 | 24.000000 | 14 | 13.000000 | 23 |
d | 19 | 6.000000 | 18 | nan | 7 |
e | 3 | 9.000000 | 20 | 21.000000 | 1 |
HTML で出力する
Styler.render()
で Style オブジェクトを HTML テーブルとして出力できます。
A | B | |
---|---|---|
a | 1 | 2 |
b | 3 | 4 |
出力されたテーブルには id 属性に UUID が設定されており、各セルにも一意となる id 属性が設定されています。
自動で割り当てられる UUID の代わりに Styler.set_uuid()
で id 属性に設定する値を指定できます。
A | B | |
---|---|---|
a | 1 | 2 |
b | 3 | 4 |
スタイルをクリアする
.Styler.clear()
でスタイルをクリアします。
A | B | |
---|---|---|
a | 1 | 2 |
b | 3 | 4 |
A | B | |
---|---|---|
a | 1 | 2 |
b | 3 | 4 |
特定の範囲に設定する
subset
にスタイルを適用する範囲を以下で指定します。
- 列名
- 列名の一覧
- pd.IndexSlice オブジェクト
A | B | C | D | E | |
---|---|---|---|---|---|
a | 0 | 1 | 2 | 3 | 4 |
b | 5 | 6 | 7 | 8 | 9 |
c | 10 | 11 | 12 | 13 | 14 |
d | 15 | 16 | 17 | 18 | 19 |
e | 20 | 21 | 22 | 23 | 24 |
A | B | C | D | E | |
---|---|---|---|---|---|
a | 0 | 1 | 2 | 3 | 4 |
b | 5 | 6 | 7 | 8 | 9 |
c | 10 | 11 | 12 | 13 | 14 |
d | 15 | 16 | 17 | 18 | 19 |
e | 20 | 21 | 22 | 23 | 24 |
A | B | C | D | E | |
---|---|---|---|---|---|
a | 0 | 1 | 2 | 3 | 4 |
b | 5 | 6 | 7 | 8 | 9 |
c | 10 | 11 | 12 | 13 | 14 |
d | 15 | 16 | 17 | 18 | 19 |
e | 20 | 21 | 22 | 23 | 24 |
CSS を設定する
テーブルの CSS を設定する
Styler.set_table_styles()
でテーブルに適用する CSS のプロパティを設定できます。
各スタイルは [{"selector": <CSS セレクタ>, "props": [(<プロパティ名>, <値>), ...]}, ...]
で指定します。
A | B | C | D | E | |
---|---|---|---|---|---|
a | 0 | 1 | 2 | 3 | 4 |
b | 5 | 6 | 7 | 8 | 9 |
c | 10 | 11 | 12 | 13 | 14 |
d | 15 | 16 | 17 | 18 | 19 |
e | 20 | 21 | 22 | 23 | 24 |
テーブルの属性を設定する
Styler.set_table_attributes()
でテーブルに属性を設定できます。
セルの CSS を設定する
Styler.set_properties()
ですべてのセルに適用する CSS のプロパティを設定できます。
A | B | C | D | E | |
---|---|---|---|---|---|
a | 0 | 1 | 2 | 3 | 4 |
b | 5 | 6 | 7 | 8 | 9 |
c | 10 | 11 | 12 | 13 | 14 |
d | 15 | 16 | 17 | 18 | 19 |
e | 20 | 21 | 22 | 23 | 24 |
行または列ごとに CSS を設定する
Styler.apply()
で列または行ごとに CSS を適用できます。
引数には Series を受け取り、その Series の各要素に適用する CSS プロパティの一覧を返す関数を指定します。
A | B | C | D | E | |
---|---|---|---|---|---|
a | 0 | 1 | 2 | 3 | 4 |
b | 5 | 6 | 7 | 8 | 9 |
c | 10 | 11 | 12 | 13 | 14 |
d | 15 | 16 | 17 | 18 | 19 |
e | 20 | 21 | 22 | 23 | 24 |
すべてのセルに CSS を設定する
Styler.apply()
でセルごとに CSS を適用できます。
引数には値を受け取り、その値に適用する CSS プロパティを返す関数を指定します。
A | B | C | D | E | |
---|---|---|---|---|---|
a | 0 | 1 | 2 | 3 | 4 |
b | 5 | 6 | 7 | 8 | 9 |
c | 10 | 11 | 12 | 13 | 14 |
d | 15 | 16 | 17 | 18 | 19 |
e | 20 | 21 | 22 | 23 | 24 |
where で条件に応じて、CSS を設定する
Styler.where(cond, value, other)
は、値を引数にとり、bool を返す関数を cond
に指定し、関数が True を返した場合は value
を適用し、False を返した場合は other
を適用します。
A | B | C | D | E | |
---|---|---|---|---|---|
a | 0 | 1 | 2 | 3 | 4 |
b | 5 | 6 | 7 | 8 | 9 |
c | 10 | 11 | 12 | 13 | 14 |
d | 15 | 16 | 17 | 18 | 19 |
e | 20 | 21 | 22 | 23 | 24 |
Styler.pipe()
で Styler オブジェクトを引数にとり、Styler オブジェクトを返す関数を数珠つなぎで呼び出せます。
A | B | C | D | E | |
---|---|---|---|---|---|
a | 0.00 | 1.00 | 2.00 | 3.00 | 4.00 |
b | 5.00 | 6.00 | 7.00 | 8.00 | 9.00 |
c | 10.00 | 11.00 | 12.00 | 13.00 | 14.00 |
d | 15.00 | 16.00 | 17.00 | 18.00 | 19.00 |
e | 20.00 | 21.00 | 22.00 | 23.00 | 24.00 |
コメント