kind hist example bar pandas printing ipython-notebook jupyter-notebook display

pandas - hist - Mostrar DataFrame como tabla en iPython Notebook



plot kind='' bar (5)

Estoy usando el portátil iPython. Cuando hago esto:

df

Tengo una hermosa mesa con celdas. Sin embargo, si hago esto:

df1 df2

no imprime la primera hermosa mesa. Si intento esto:

print df1 print df2

Imprime la tabla en un formato diferente que derrama columnas y hace que la salida sea muy alta.

¿Hay alguna manera de obligarlo a imprimir las hermosas tablas para ambos conjuntos de datos?


Deberá usar las funciones HTML() o display() del módulo de visualización de IPython:

from IPython.display import display, HTML # Assuming that dataframes df1 and df2 are already defined: print "Dataframe 1:" display(df1) print "Dataframe 2:" display(HTML(df2.to_html()))

Tenga en cuenta que si solo print df1.to_html() obtendrá el HTML sin procesar y sin procesar.

También puede importar desde IPython.core.display con el mismo efecto.


Esta respuesta se basa en el segundo consejo de esta publicación de blog: 28 consejos, trucos y accesos directos de Jupyter Notebook

Puede agregar el siguiente código en la parte superior de su computadora portátil

from IPython.core.interactiveshell import InteractiveShell InteractiveShell.ast_node_interactivity = "all"

Esto le dice a Jupyter que imprima los resultados para cualquier variable o declaración en su propia línea. Entonces puede ejecutar una celda que contenga únicamente

df1 df2

y "imprimirá las hermosas tablas para ambos conjuntos de datos".


Parece que puede mostrar ambos dfs usando una coma en el medio en la pantalla. Me di cuenta de esto en algunos cuadernos en github. Este código es del cuaderno de Jake VanderPlas.

class display(object): """Display HTML representation of multiple objects""" template = """<div style="float: left; padding: 10px;"> <p style=''font-family:"Courier New", Courier, monospace''>{0}</p>{1} </div>""" def __init__(self, *args): self.args = args def _repr_html_(self): return ''/n''.join(self.template.format(a, eval(a)._repr_html_()) for a in self.args) def __repr__(self): return ''/n/n''.join(a + ''/n'' + repr(eval(a)) for a in self.args)

display(''df'', "df2")


Prefiero no jugar con HTML y usar tanta infraestructura nativa como sea posible. Puede usar el widget de salida con Hbox o VBox:

import ipywidgets as widgets from IPython import display import pandas as pd import numpy as np # sample data df1 = pd.DataFrame(np.random.randn(8, 3)) df2 = pd.DataFrame(np.random.randn(8, 3)) # create output widgets widget1 = widgets.Output() widget2 = widgets.Output() # render in output widgets with widget1: display.display(df1) with widget2: display.display(df2) # create HBox hbox = widgets.HBox([widget1, widget2]) # render hbox hbox

Esto produce:


from IPython.display import display display(df) # OR print df.to_html()