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())
これを水平にしたいと思ったことないですか? 行数多いとスクロールしないと見えないですし、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)
水平方向にセル出力の表示サイズを超えた場合は下に続いて表示される
水平に無茶苦茶多く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))
今回は以上!
参考