LoginSignup
3
1

More than 1 year has passed since last update.

Jupyterの可視化でよく使うdisplay()を水平(横)方向に出力する

Posted at

0. はじめに

今回は軽い記事です。

Jupyterを使用してる時、データフレーム等をセルの出力結果に複数出力させる時によく使うdisplay()
これは以下のように1個のセルで複数のデータフレームを「垂直」に出力できます。

垂直にdisplay
import IPython.display # これ不要だけど一応
import numpy as np

#サンプル用のデータフレーム
np.random.seed(7) # 乱数固定
sample_df = pd.DataFrame(np.random.uniform(size=(5, 2)))

display(sample_df.head())
display(sample_df.head())

垂直.png

これを水平にしたいと思ったことないですか? 行数多いとスクロールしないと見えないですし、2つのデータフレームを行比較したいときにこの表示だと不便ですよね?
ということで今回は水平に表示させてみます。

1. displayで水平表示

初期機能ではないため、参考をほぼ流用しましたが作ってしましましょう。

ポイントは以下
_repr_html_()でNotebookセルの最後のアイテムであるときにto_html()を呼び出している
<div style="float">{}</div>でHTMLのdiv要素を横並びに配置
・paddingはdf間の幅なので、好きに設定すればいい

水平にdisplay
def show_many_heads(*dfs, n=5):
    class HorizontalDisplay:
        def _repr_html_(self):
            template = '<div style="float: left; padding: 5px;">{}</div>'
            return  ''.join(template.format(df.head(n)._repr_html_()) for df in dfs)
    return HorizontalDisplay()

# 2個のdfを垂直表示
show_many_heads(sample_df, sample_df, n=5)

水平.png

水平方向にセル出力の表示サイズを超えた場合は下に続いて表示される

水平に無茶苦茶多くdisplay
#通常のdisplayと組み合わせてもOK
display(show_many_heads(sample_df, sample_df, n=2))
display(show_many_heads(sample_df, sample_df, sample_df, sample_df, sample_df, n=3))

水平多数.png

今回は以上!

参考

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1