¿Por qué se ven así los DataFrames de Pandas en un Jupyter Notebook?

Gustavo Juantorena
3 min readApr 16, 2022

El título de este artículo es una pregunta que quizá alguien (al igual que yo) ya se haya hecho, pero si sos parte de aquellas personas que no, de todos modos puede que aprendas algo nuevo.

Jupyter Notebook es un entorno web interactivo de desarrollo muy popular entre la gente que se dedica a la ciencia de datos. Nos permite probar análisis rápidamente, crear visualizaciones, agregar código, etc. Esto lo transforma en una especie de cuaderno de laboratorio digital donde vamos poniendo las cosas que probamos y los resultados que obtuvimos.

Para que la magia de Jupyter Notebook funcione lo que hay detrás se llama IPython, un shell interactivo que añade funcionalidades extra al lenguaje de programación Python. Finalmente un cuaderno de Jupyter es un documento de tipo JSON que tiene texto enriquecido y código ejecutado en IPython.

Pandas es la librería estrella de Python para trabajar con datos y su principal estructura es el DataFrame, una tabla tipo excel compuesta por filas y columnas.

Pero volviendo a nuestra pregunta original ¿Qué hace que un DataFrame de Pandas se vea así?

Si abrimos IPython desde una terminal y creamos un DataFrame sencillo veremos lo siguiente:

Si en cambio hacemos lo mismo desde un cuaderno de Jupyter se verá así:

¡Se ve mucho más lindo! E incluso si pasamos por arriba las filas cambian de color.

La razón detrás de esto la podemos encontrar si presionamos botón derecho sobre el Dataframe y apretamos en inspecionar:

Y al mirar el código en las herramientas de desarrollador de nuestro navegador …

¡Ajá! Se trataba de código HTML que Python está renderizando para darnos una visualización más agradable. En este caso particular el código es este:

¿Y cómo está haciendo eso?

Si vamos a la documentación de IPython resulta que existe una manera de presentar “texto enriquecido”:

En este caso la librería Pandas utiliza HTML pero podría estar usando markdown, latex, entre otros.

Acá un ejemplo en base a la documentación:

¿Y esto para qué sirve?

Bueno, en principio esto surgió de mi curiosidad por entender como funciona en detalle Pandas, pero creo que puede ser muy útil en varios casos como los siguientes:

  1. Modificar el modo en que se renderizan en pantallas distintos elementos creados en base a lenguaje Python.
  2. Crear nuevas librerías o funcionalidades de las mismas.
  3. Exportar nuestro Jupyter Notebook hacia otras plataformas (por ejemplo directamente a Medium)

¡Espero que les haya resultado interesante! Si fue así pueden seguirme en Linkedin o pasar por mi Github.

Todo comentario es bienvenido y se aceptan recomendaciones para próximos artículos.

¡Nos vemos la próxima!

Originally published at https://www.linkedin.com.

--

--

Gustavo Juantorena

PhD student | Cognitive Neuroscience | Buenos Aires, Argentina.