Notebookに複数のDataFrameを(水平に)出力する+displayについて

調べた結果

  • core.displayのDisplayObjectを使ったものは出力できる
    • dataframeだけでなくいろいろなものを出力できる
    • 出力はOutではなく、print等の出力領域に表示される
  • core.displayより直下のdisplay moduleは便利なものを含んでいる
    • YoutubeやIFrame便利そう
  • repr_html を実装しているclassのinstanceは、このmethodが呼ばれ結果はhtmlとして解釈される
    • Python DataScience Handbookのipynbを見ていたら書いてあった
    • ipythonのrepositoryにsampleがあった
    • pandas.DataFrameにはもちろん実装してあった(実際の処理はto_html)

https://gist.github.com/ksomemo/d3d1a47baebcceeafef949895612ec92

import pandas as pd
import IPython.core.display as display
import IPython.display
"""

from IPython.core.display import *
from IPython.lib.display import *

lib.display includes
__all__ = ['Audio', 'IFrame', 'YouTubeVideo', 'VimeoVideo', 'ScribdDocument',
           'FileLink', 'FileLinks']
"""

df = pd.DataFrame(dict(a=range(4)))

print("index: 0 (print)")
IPython.display.display(df[0:1])

print("index: 1 (print)")
display.display(df[1:2])

print("index: 2 (print)")
display.display_html(df[2:3])

print("index: 3 (Out to Cell)")
df[3:]
class HorizontalDisplay:
    def __init__(self, *args):
        self.args = args

    def _repr_html_(self):
        template = '<div style="float: left; padding: 10px;">{0}</div>'
        return "\n".join(template.format(arg._repr_html_())
                         for arg in self.args)
# print
display(HorizontalDisplay(df, df))
# output
HorizontalDisplay(df, df)

参考

  • http://stackoverflow.com/questions/34398054/ipython-notebook-cell-multiple-outputs
  • http://stackoverflow.com/questions/36719812/pandas-how-to-reference-and-print-multiple-dataframes-as-html-tables
  • http://stackoverflow.com/questions/26873127/show-dataframe-as-table-in-ipython-notebook/29665452#29665452
  • http://qiita.com/mokemokechicken/items/98564e4a6a8963b2a6e2
    • subplots使わない複数グラフ出力
  • https://github.com/ipython/ipython/blob/41bc8e5ec492820b32f60122dd178300f7e01240/examples/IPython%20Kernel/Custom%20Display%20Logic.ipynb
  • http://nbviewer.jupyter.org/github/jakevdp/PythonDataScienceHandbook/blob/master/notebooks/03.06-Concat-And-Append.ipynb