pandasデータフレームのJupyter上の出力表示をちょっと変える方法

pandasデータフレームのJupyter上の出力表示をちょっと変える方法

Excelなどでセルに入っている数字を元に、セルを色分けしたり、棒グラフをセルの中に描いたりすることがります。

そのようなことを、pandasデータフレームを、Jupyter Notebook上に表示させるときできないだろうか、と思った方もいるかもしれません。

知っている人にとっては大したお話しではありませんが、知らない人にとっては「そんなことできるんだぁー」という感じかと思います。

と言うことで、今回は「pandasデータフレームのJupyter上の出力表示をちょっと変える方法」というお話しです。

ライブラリーを読み込む

今回使用するサンプルデータを読み込みます。

以下、コードです。

# ライブラリーの読み込み
import pandas as pd
import numpy as np

 

サンプルデータの生成その1

今回利用するサンプルデータの1つを乱数を使って生成します。

以下、コードです。

# サンプルデータ生成
df = pd.DataFrame(np.random.randn(150, 150))

 

サンプルデータは、150行×150列(変数)のデータセットです。

どのようなデータなのか確認してみます。

以下、コードです。

# データセットの確認
df

 

以下、実行結果です。

 

行と列の途中に「」というのがあることに気づくことでしょう。

」は、表示できる最大の行数(デフォルトでは60行)や列数(デフォルトでは20列)を超えると登場します。要は、「」でその間のデータの表示を省略しているのです。

この「」の中を見たい、という方もいることでしょう。

表示できる最大の行数(デフォルトでは60行)や列数(デフォルトでは20列)を変更してしまえば見えます。

 

表示できる最大の行数と列数を変更する

では先ず、現在表示できる最大行数を見てみます。

以下、コードです。

# 表示できる行数の確認
pd.options.display.max_rows

 

以下、実行結果です。

 

表示できる最大の行数が60行(デフォルトの行数)であることが分かります。

最大行数の設定を変更してみます。

以下、コードです。

# 表示できる行数の変更
pd.options.display.max_rows = 150

 

本当に見えるようになったのか、確認してみます。

以下、コードです。

# 表示できる行数の確認
pd.options.display.max_rows

 

以下、実行結果です。

 

行側の「」がなくなり、すべての行が見るようになりました。しかし、まだ列側に「」があります。

現在表示できる最大列数を見てみます。

以下、コードです。

# 表示できる列数の確認
pd.options.display.max_columns

 

以下、実行結果です。

 

表示できる最大の行数が20列(デフォルトの列数)であることが分かります。

最大列数の設定を変更してみます。

以下、コードです。

# 表示できる行数の変更
pd.options.display.max_columns = 150

 

本当に見えるようになったのか、確認してみます。

以下、コードです。

# データセットの確認
df

 

以下、実行結果です。

 

列側の「」もなくなり、すべての列が見るようになりました。

 

infoで確認できる変数の上限を増やす

変数情報を確認するとき、infoメソッドを使う方は思います。

試しに先ほど作ったサンプルデータに対し実行します。

以下、コードです。

# 変数情報の確認
df.info()

 

以下、実行結果です。

 

いつもと出力が違う、と思われた方もいるかもしれません。

変数の数がある上限を超えると、infoメソッドは、変数(列)それぞれに対する情報を簡易表示するようになります。

その上限はいくつでしょうか?

以下、コードです。

# 変数情報を表示する最大列数(変数の数)の確認
pd.options.display.max_info_columns

 

以下、実行結果です。

 

これは、確認できる変数の上限が、100ということを表しています。この100はデフォルト値です。

この上限を増やすことができます。150に増やします。

以下、コードです。

# 変数情報を表示する最大列数(変数の数)の変更
pd.options.display.max_info_columns = 150

 

本当に見えるようになったのか、確認してみます。

以下、コードです。

# 変数情報の確認
df.info()

 

以下、実行結果です。

 

表示する小数点の桁数を増やしたい

先ほどからJupyter上で見ているデータは、小数点6位までしか見えていません。デフォルトでそうなっているからです。

本当にそうなっているのか確認してみます。

以下、コードです。

# 表示できる小数点の桁数の確認
pd.options.display.precision

 

以下、実行結果です。

 

この小数点の桁数の設定を変更することができます。10桁に増やしてみます。

以下、コードです。

# 表示できる小数点の桁数の変更
pd.options.display.precision = 10

 

本当に桁数が増えたのか、確認してみます。

以下、コードです。

# データセットの確認
df

 

以下、実行結果です。

 

サンプルデータの生成その2

次に、ここまで利用していたサンプルデータよりも小さなデータセットを新たに作り、セルの色付けなど実施していきたいと思います。

ということで、新しいサンプルデータを乱数を使って生成します。

以下、コードです。

# サンプルデータ生成
df = pd.DataFrame(np.random.randn(10, 5))

 

サンプルデータは、10行×5列(変数)のデータセットです。

どのようなデータなのか確認してみます。

以下、コードです。

# データセットの確認
df

 

以下、実行結果です。

 

セルの値のフォーマットの変更

このデータセットに対し、小数点2桁まで表示し、その後ろに%を付けてみます。

以下、コードです。

# セルの値のフォーマットの変更(小数点2桁まで表示で、後ろに%を付ける)
pd.options.display.float_format = '{:.2f}%'.format

 

データセットを確認してみます。

以下、コードです。

# データセットの確認
df

 

以下、実行結果です。

 

小数点2桁まで表示し、その前に$を付けてみます。

以下、コードです。

# 表示する値のフォーマットの変更(小数点2桁まで表示で、前に$を付ける)
pd.options.display.float_format = '${0:,.2f}'.format

 

データセットを確認してみます。

以下、コードです。

# データセットの確認
df

 

以下、実行結果です。

 

前後に何もつけず小数点2桁まで表示します。

以下、コードです。

# 表示する値のフォーマットの変更(小数点2桁まで表示)
pd.options.display.float_format = '{0:,.2f}'.format

 

データセットを確認してみます。

以下、コードです。

# データセットの確認
df

 

以下、実行結果です。

 

条件を設定しセルの色を変える

条件を設定しセルの色を変えることができます。

例えば、プラスの値の場合に青マイナスの値の場合に赤、などです

以下、コードです。

# 条件を設定しセルの色を変える
df.style.where(lambda x: x > 0, 
               'background-color: red; color: white', 
               'background-color: blue; color: white')

 

以下、実行結果です。

 

セルの値に応じて色に濃淡を付ける

セルの値に応じて色に濃淡(グラデーション)を付けることができます。

以下、コードです。

# セルの値に応じて色に濃淡を付ける
df.style.background_gradient(cmap='Greens')

 

以下、実行結果です。

 

セルに値に応じた長さの棒グラフを表示させる

セルに値に応じた長さの棒グラフを表示させることができます。

以下、コードです。

# セルに値に応じた長さの棒グラフを表示させる
df.style.bar(color = 'lightblue')

 

以下、実行結果です。

 

さらに、マイナスは左棒グラフプラスは右棒グラフという形で表現することもできます。

以下、コードです。

# セルに値に応じた長さの棒グラフを表示させる(マイナスは左棒グラフ、プラスは右棒グラフ)
df.style.bar(align='mid', color=['pink', 'lightblue'])

 

以下、実行結果です。

 

各列の最大値と最小値に色を付ける

各列の最大値と最小値に色を付けることができます。

先ずは、最大値に色を付けてみます。

以下、コードです。

# 各列の最大値に色を付ける
df.style.highlight_max(color='lightblue')

 

以下、実行結果です。

 

次に、最小値に色を付けてみます。

以下、コードです。

# 各列の最小値に色を付ける
df.style.highlight_min(color='pink')

 

以下、実行結果です。

 

最後に、最大値と最小値の両方に色を付けて表示させてみます。

以下、コードです。

# 各列の最大値と最小値に色を付ける
df.style \
  .highlight_max(color='lightblue') \
  .highlight_min(color='pink')

 

以下、実行結果です。

 

まとめ

今回は「pandasデータフレームのjupyter上の出力表示をちょっと変える方法」というお話しをしました。

単に、Jupyter上のデータフレームなどの出力フォーマットを変えるだけです。

今回は主要なものだけを紹介しました。

もっと色々なことができますので、興味のある方は調べて実施してみてください。