Introducción
Ya hablamos en su momento de IPython, un intérprete de Python con multitud de características avanzadas que lo hacían indispensable para ejecutar sesiones interactivas. Hoy vamos a continuar con lo que habíamos dejado a medias, y vamos a dedicar un artículo al notebook de IPython, una herramienta que está verdaderamente revolucionando la manera en que se utiliza Python en ámbitos científicos y conferencias sobre el lenguaje, como se ha demostrado en la reciente PyData NYC 2012 que se ha celebrado en Nueva York (recuerda que en Pybonacci hemos seleccionado un resumen de charlas de la PyData NYC 2012).
Biggest PyData winner: IPython notebook by a landslide. Everyone seems to be using it. Can't wait to try to teach @swcarpentry with it.
— Richard T. Guy (@richardtguy84) October 27, 2012
Getting ready for #pydata = Online Python Tutor on the #ipython notebook. pic.twitter.com/ZClSle9Y
— Brian Granger (@ellisonbg) October 25, 2012
https://twitter.com/dfm/status/262245974334918656
Awesome! IPython notebook slides (!) used in @aterrel 's talk on MPI.
— Thomas Wiecki (@twiecki) October 27, 2012
Aquí incluimos un vídeo que hemos grabado para mostrar las características fundamentales de IPython, porque ya se sabe que un vídeo vale más que mil imágenes 😉 No olvides suscribirte a nuestro canal en YouTube para futuras creaciones.
El notebook de IPython
El notebook de IPython es una interfaz web para IPython, inspirada en los notebooks de Mathematica y Sage. Como puedes leer en esta retrospectiva histórica escrita por Fernando Pérez, la idea de crear una interfaz de este tipo ya existía desde los inicios del proyecto IPython, allá por 2001, y después de muchos años, varios intentos fallidos y habiendo aprendido de la experiencia del propio notebook de Sage, que surgió antes pero estaba mucho menos pulido, fue finalmente presentado en la conferencia EuroSciPy 2011.
En la última versión de IPython se corrigieron algunos errores y se mejoró la parte de la interfaz y actualmente, como hemos señalado arriba, está atrayendo la atención de multitud de usuarios y medios de comunicación. También hay artículos sobre cómo utilizarlo para escribir entradas en Blogger o Octopress.

Notebook de IPython corriendo a pantalla completa. Notebook correspondiente al artículo de Pybonacci sobre transformadas discretas de Fourier en Python.
El notebook de IPython utiliza el servidor web Tornado y utiliza ØMQ para la comunicación entre procesos y websockets para la interacción con el navegador, con lo que se crea una conexión asíncrona y se consigue una buena velocidad de respuesta. En la parte de la interfaz utiliza MathJax para las fórmulas matemáticas y el editor CodeMirror.
Características
Estas son algunas de las características del notebook de IPython:
- Lista de notebooks.
- Interfaz para el procesamiento en paralelo (esta característica no necesita el notebook).
- Edición y movimiento de celdas, inserción y eliminación arbitraria.
- Gráficos y figuras integrados con el modo
--pylab inline
(esta característica tampoco necesita el notebook, puede usarse también en la interfaz Qt). - Autocompletado de código.
- Celdas con encabezados, puro HTML o Markdown.
- Posibilidad de utilizar R, Octave, Cython…
- Enlaces a la documentación del notebook, IPython, Python, NumPy, Scipy, SymPy y matplotlib.
- Ayuda integrada.
- Exportación a archivo
.ipynb
, basado en JSON, para compartir notebooks. - Atajos de teclado
Para mí, los atajos de teclado son uno de los mayores aciertos de este notebook. Aquí incluimos algunos de los más utilizados, la tabla completa se puede ver con el comando Ctrl-m h
:
Comando | Acción |
---|---|
Shift-Enter |
Ejecutar celda |
Ctrl-s |
Guardar notebook |
Ctrl-m x |
Cortar celda |
Ctrl-m c |
Copiar celda |
Ctrl-m v |
Pegar celda |
Ctrl-m d |
Eliminar celda |
Ctrl-m a |
Insertar celda encima |
Ctrl-m b |
Insertar celda debajo |
Ctrl-m m |
Celda Markdown |
Ctrl-m 1-6 |
Celda con encabezados HTML niveles 1 a 6 |
Ctrl-m h |
Mostrar atajos de teclado |
Compartir
Si bien el propio notebook de IPython es una herramienta extraordinaria, lo realmente valioso de ella es la posibilidad de compartir fácilmente notebooks con todo el mundo. La gente de IPython ha creado el Visor de notebooks de IPython nbviewer, con la que puedes visualizar cualquier notebook de IPython con tal de escribir la URL. Incluso si subes el archivo .ipynb
al servicio Gist de GitHub, ¡no tienes más que incluir la ID del gist! El siguiente enlace lleva a la versión en notebook de nuestra entrada sobre transformadas discretas de Fourier:
http://nbviewer.ipython.org/3804365/
Enlaces
- Hay otros dos vídeos interesantes sobre el notebook de IPython en YouTube, el primero por C. Titus Brown y el segundo de la charla de Fernando Pérez en la PyCon 2012.
- En este blog puedes encontrar una galería de imágenes con ejemplos de representación de grafos con NetworkX dentro del notebook de IPython. Una transcripción de la segunda está disponible en las notas de Marc Abramowitz de la PyCon 2012.
Para terminar me gustaría agradecer a Joe di Castro, a quien admiro personalmente, todas las dudas que me contesta individualmente, y en concreto este tweet:
https://twitter.com/python_majibu/status/258640137020403713
Un saludo y gracias por leer 🙂