Python para datos

Jupyter Notebook: el cuaderno del analista de datos

Jupyter Notebook es una aplicación gratuita que se abre en el navegador y sirve para escribir cuadernos: archivos donde conviven el código, lo que ese código produce y el texto que lo explica. Aquí verá cómo instalarlo, qué hace el motor que ejecuta el código, cuándo conviene JupyterLab o Visual Studio Code y qué errores vuelven irrepetible un análisis.

Por Jhon Mosquera9 nov 202617 min de lectura

Última actualización: 2026-11-09

Contenido de esta página

El 14 de septiembre de 2015, los dos observatorios LIGO, detectores de ondas gravitacionales en Hanford y Livingston, registraron una señal [1]. Esas ondas son ondulaciones del espacio que viajan desde choques de objetos enormes. Aquella venía de la fusión de dos agujeros negros [2].

La colaboración científica publicó el hallazgo el 11 de febrero de 2016 en la revista Physical Review Letters [2]. Con los datos salió algo menos famoso. El centro de datos abiertos del observatorio publicó un tutorial para procesar la señal, en dos formatos [3]. Uno era un programa de Python; el otro, un cuaderno de IPython, el proyecto del que nació Jupyter [3][11]. Bastaba descargar el cuaderno, un archivo auxiliar y los datos en una misma carpeta, y correrlo [3].

Hay un matiz que el propio tutorial deja escrito. Entre sus pasos cargaba una plantilla teórica, la forma de onda que predice la física. Esa plantilla se generó «con parámetros favorecidos por el resultado de la estimación de parámetros de GW150914» [3]. Es decir, partía de resultados que la colaboración ya había obtenido. Además, la sección de tutoriales del centro advierte que los que muestra hoy no se usan para producir los resultados que publica la colaboración [4]. El valor del cuaderno era otro, más útil para el resto de nosotros: un análisis que cualquiera podía leer y volver a correr en su propio computador, paso por paso.

Ese documento que se lee como un informe y se ejecuta como un programa es un notebook, o cuaderno. La aplicación con que se abría aquel archivo, el IPython Notebook, hoy se llama Jupyter [20].

Cuaderno azul abierto en blanco sobre una mesa óptica de laboratorio, con espejos y un haz de láser tenue.

¿Qué es Jupyter Notebook y para qué sirve?

Jupyter Notebook es un programa gratuito y de código abierto, es decir, que cualquiera puede leer y modificar, con el que se escriben cuadernos desde el navegador de internet [5][8]. Un cuaderno junta en un mismo archivo instrucciones que el computador ejecuta, sus resultados y explicaciones en lenguaje corriente. Sirve para explorar datos, probar una idea y mostrarle a otra persona cómo se llegó a una cifra.

La documentación del proyecto define el cuaderno computacional como un documento que se puede compartir y que combina código, descripciones en lenguaje sencillo, datos, gráficos y controles interactivos [5]. El código es el conjunto de instrucciones escritas en un lenguaje de programación. João Felipe Pimentel y sus coautores, un equipo de universidades de Brasil y Estados Unidos, publicaron en 2019 un estudio de los cuadernos públicos de GitHub, el sitio web donde se comparte código. De los cuadernos que reunieron, el 93,32 % estaba escrito en Python [25].

En 2016, Thomas Kluyver, Fernando Pérez y otros miembros del equipo de Jupyter lo describieron como «un formato de documento para publicar código, resultados y explicaciones de una forma que es a la vez legible y ejecutable» [7].

Un ejemplo ilustrativo: la oficina de estadística de una alcaldía arma cada trimestre un boletín de inscritos a sus programas. Con un cuaderno, el texto del boletín, el cálculo y el gráfico viven juntos. Si alguien pregunta de dónde salió un promedio, la respuesta está una celda más arriba.

La herramienta corre en su propio computador. Si la dirección del navegador empieza por http://localhost: o http://127.0.0.1:, el servidor es su máquina, y la documentación afirma que Jupyter no envía sus datos a ninguna otra parte [6]. Para una entidad que maneja datos personales, ese detalle pesa.

¿Por qué el cuaderno cambió el análisis de datos?

Antes del cuaderno, el análisis vivía en dos lugares: el programa que hacía el cálculo y el documento que contaba el resultado. El cuaderno los fundió. La idea viene de la programación literaria, que el informático Donald Knuth popularizó: escribir el código mezclado con texto que lo explica, para que otras personas lo entiendan [8].

El cambio práctico fue el ritmo de trabajo. Según la documentación de Jupyter Notebook, se avanza por partes, celda a celda, y eso resulta mucho más cómodo para explorar [6]. La alternativa anterior era repartir el cálculo en programas que debían correr juntos, algo pesado cuando algunos pasos tardan [6].

La guía de Python para el análisis de datos explica qué librerías componen ese kit y en qué orden conviene aprenderlas; aquí nos quedamos con el cuaderno.

Celdas de código y celdas de texto (Markdown)

Un cuaderno es una secuencia de celdas, que son cajas de texto de varias líneas que se ejecutan una por una [6]. Hay tres tipos: de código, de Markdown y de texto sin procesar [6]. Las dos primeras son las del día a día.

  1. Celda de código. Guarda instrucciones de programación. Al ejecutarla, el contenido viaja al kernel, el programa que hace los cálculos, y el resultado aparece justo debajo [6]. Ese resultado puede ser un número, una tabla o un gráfico [6].
  2. Celda de Markdown. Guarda texto con formato. Markdown es un sistema sencillo de marcas para poner cursivas, negritas, listas y títulos, que se escriben con el signo # [6]. Admite fórmulas matemáticas escritas en LaTeX, el lenguaje con que se componen los documentos científicos [6].
  3. Celda de texto sin procesar. Guarda contenido que el cuaderno no interpreta y que pasa intacto cuando el archivo se convierte a otro formato [6].

Toda celda nueva nace como celda de código, y su tipo se cambia desde la barra de herramientas o con el teclado [6]. Los títulos de Markdown sirven además como índice: cada uno se vuelve un enlace a su sección del cuaderno [6].

El archivo que resulta tiene la extensión .ipynb. Por dentro es JSON, un formato de texto para guardar datos ordenados, y por eso se puede compartir y versionar, es decir, llevar un historial de sus cambios [6]. Guarda tanto lo que usted escribió como los resultados que produjo [6]. Ese detalle tiene una consecuencia que veremos en las malas prácticas.

¿Qué es el kernel y qué pasa al reiniciarlo?

El kernel es el programa que ejecuta el código del cuaderno y guarda en la memoria las variables que se van creando [8]. Cada cuaderno abierto tiene uno [6]. Para Python, el kernel de referencia se llama ipykernel y está construido sobre IPython [9]. La comunidad mantiene kernels para muchos otros lenguajes [9].

Que el kernel guarde las variables es lo que permite trabajar por partes: una celda crea un dato y la siguiente lo usa [8]. El kernel sigue vivo aunque se cierre la ventana del navegador; al volver a abrir el cuaderno, se reconecta al mismo [6]. Si se apaga el servidor de Jupyter, esas variables se pierden [8].

Reiniciar el kernel, desde el menú Kernel o con la tecla 0 pulsada dos veces, arranca de cero ese proceso de cálculo [6]. Las variables desaparecen, pero los resultados viejos pueden seguir impresos en pantalla: borrar las salidas es otra acción [20][25]. Ahí nace una confusión que se entiende mejor con un ejemplo.

Estas tres celdas, con datos inventados, la muestran:

# Celda 1: inscritos a un programa en cuatro meses (datos inventados)
inscritos = [120, 135, 128, 150]
# Celda 2: el promedio mensual
promedio = sum(inscritos) / len(inscritos)
print(promedio)
# Celda 3: llega un quinto mes
inscritos.append(90)

El resultado de la celda 2 depende del orden en que se hayan corrido las tres:

Orden en que se corrieron las celdasLo que imprime la celda 2 la última vez
1 y 2133.25
1, 2, 3 y otra vez 2124.6
1, 3 dos veces por error, y 2118.83333333333333 (el 90 entró dos veces)
Solo la 2, después de reiniciarError NameError: la variable inscritos no existe

Todas las filas salen del mismo cuaderno, sin cambiar una letra del código. Lo que cambió fue la historia de clics que el kernel recuerda y que el archivo no muestra. Eso es el estado oculto.

¿Cómo instalar Jupyter Notebook con pip o con conda?

Jupyter Notebook se instala con una sola orden en la terminal, la ventana donde se escriben comandos al computador. El requisito previo es tener Python: la versión 7.6.5 de Notebook, publicada el 6 de noviembre de 2026, pide Python 3.10 o posterior [12]. Para abrirlo sirve la versión más reciente de Firefox, Chrome, Safari o Edge [14].

Hay dos caminos. pip es el instalador de paquetes de Python. Las instrucciones oficiales de instalación de Jupyter se basan en él y lo presentan como la herramienta de instalación recomendada para Python [13]. conda es un sistema que instala paquetes y además administra entornos separados [13][25]. Lo traen distribuciones como Miniconda o Miniforge [24].

Con pip, los pasos son estos:

  1. Abra la terminal (en Windows, por ejemplo, PowerShell).
  2. Instale Notebook o JupyterLab con la orden de la documentación oficial [13].
  3. Arránquelo con la orden de inicio correspondiente [13].
# Instala Jupyter Notebook (versión 7.6.5 al 9 de noviembre de 2026)
pip install notebook

# Lo abre en el navegador
jupyter notebook

# Si prefiere JupyterLab, la otra aplicación del proyecto
pip install jupyterlab
jupyter lab

Para esta guía se hizo una instalación de prueba el 9 de noviembre de 2026 con python -m pip install notebook nbconvert, que suma la herramienta de exportación. Instaló Notebook 7.6.5 y, con él, JupyterLab 4.6.6 y el kernel de Python. La dependencia de JupyterLab está declarada en el paquete [12].

Con conda, el proyecto recomienda instalar JupyterLab desde el canal conda-forge, un repositorio comunitario de paquetes [13]. La documentación de JupyterLab trae el comando literal [14]. Para Notebook, el mismo canal publica la versión 7.6.5 [15], y la orden sigue el mismo patrón:

# JupyterLab con conda (comando de la documentación oficial)
conda install -c conda-forge jupyterlab

# Jupyter Notebook con conda, desde el mismo canal
conda install -c conda-forge notebook

Separar cada proyecto en su propio entorno virtual, para que las librerías de uno no choquen con las de otro, es un tema aparte que no se desarrolla aquí.

Cómo arrancarlo y dónde quedan sus archivos

Al escribir jupyter notebook, la terminal muestra información del servidor y el navegador se abre, por defecto, en la dirección http://127.0.0.1:8888 [6]. La primera pantalla, el tablero, lista los cuadernos de la carpeta desde la que se lanzó la orden [6]. Por eso conviene abrir la terminal en la carpeta del proyecto antes de arrancar.

Desde el tablero se crea un cuaderno nuevo o se abre uno existente [6]. Con la orden jupyter notebook informe.ipynb se abre ese cuaderno directamente [6].

JupyterLab o Jupyter Notebook: ¿cuál usar?

JupyterLab y Jupyter Notebook abren los mismos archivos y ejecutan el mismo código; cambia la forma de trabajar. Notebook ofrece una experiencia simplificada, centrada en un documento a la vez [8][17]. JupyterLab es un entorno con pestañas, varios cuadernos a la vista y herramientas extra, como una consola del sistema [8]. La documentación pone el ejemplo de un profesor que usa JupyterLab para su trabajo diario y Notebook para enseñar [8].

Existe además el notebook clásico, la interfaz de la versión 6. Durante años estuvo en modo de mantenimiento mientras el desarrollo se movía a JupyterLab [16]. A finales de 2021, tras escuchar a la comunidad, el proyecto decidió seguir desarrollando Notebook. Así nació Notebook 7, construido sobre JupyterLab [16][17].

RasgoJupyter Notebook 7JupyterLab 4Notebook clásico (NbClassic)
Qué esAplicación simplificada para escribir cuadernos [5]Interfaz web de nueva generación del proyecto [18]La interfaz de la versión 6, conservada como paquete aparte [19]
Cómo se veCada cuaderno abre en su propia pestaña del navegador [17]Varios documentos lado a lado, con pestañas y divisiones [18]La interfaz anterior, sin las funciones nuevas [16]
Qué trae ademásDepurador, tabla de contenido y tema oscuro [17]Terminales, consolas de código y editores de texto [18]Compatibilidad con extensiones antiguas [16]
Instalar con pippip install notebook [13]pip install jupyterlab [13]pip install nbclassic [19]
Abrirjupyter notebook [13]jupyter lab [13]jupyter nbclassic [19]
Versión al 9 de noviembre de 20267.6.5, del 6 de noviembre de 2026 [12]4.6.6, del 6 de noviembre de 2026 [12]1.3.3, del 16 de septiembre de 2025 [19]
Archivo que usa.ipynb.ipynb.ipynb (el mismo formato en las tres [18])

Para quien empieza, la tabla se resume en una decisión. Si el trabajo es un cuaderno a la vez, Notebook basta. Si necesita tener datos, cuaderno y terminal a la vista, JupyterLab. El clásico solo se justifica para mantener una extensión vieja que todavía no tiene reemplazo.

¿Cómo usar Jupyter Notebook en Visual Studio Code?

Visual Studio Code, el editor de código gratuito de Microsoft, abre y ejecuta cuadernos de Jupyter de forma nativa a través de su extensión de Jupyter [20][21]. La ventaja es trabajar el cuaderno en el mismo programa donde se editan los demás archivos del proyecto. Así se configura:

  1. Instale Visual Studio Code y, dentro de él, la extensión de Jupyter [20].
  2. Tenga un entorno de Python con el paquete ipykernel instalado, que es el kernel de Python [20].
  3. Abra la paleta de comandos con Ctrl+Shift+P y ejecute Create: New Jupyter Notebook, o cree un archivo con extensión .ipynb [20].
  4. Elija el kernel en el selector de la esquina superior derecha del cuaderno [20].
  5. Ejecute cada celda con Shift+Enter, que la corre y crea una nueva debajo [20].

El editor suma herramientas que el navegador no trae de fábrica. Un explorador de variables muestra en una lista las que viven en el kernel en ese momento [20]. Una vista de diferencias compara por separado el código, los resultados y los metadatos de cada celda, útil cuando el cuaderno está bajo control de versiones [20]. Y un depurador permite correr una celda línea por línea [20].

Una advertencia de la propia documentación de Visual Studio Code: en un cuaderno se puede esconder código dañino [20]. Por eso conviene abrir los cuadernos en una carpeta declarada de confianza. Si la carpeta no lo es, el editor entra en modo restringido: no corre celdas y oculta los resultados enriquecidos [20].

Atajos de teclado de Jupyter que más se usan

Los atajos de Jupyter dependen del modo en que esté la celda. En modo edición se escribe dentro de ella; en modo comando, cada tecla actúa sobre la celda entera [18][22]. Enter pasa al modo edición y Esc al modo comando [6]. Los atajos del notebook clásico siguen funcionando en JupyterLab [18], y Visual Studio Code documenta los mismos para sus cuadernos [20].

AtajoModoQué haceFuente
EnterComandoEntra a editar la celda seleccionada[6]
EscEdiciónSale al modo comando[6]
Shift + EnterCualquieraEn Jupyter, ejecuta la celda y pasa a la siguiente; si es la última, crea una nueva [6]. En Visual Studio Code, la ejecuta e inserta siempre una celda nueva debajo [20][6][20]
Ctrl + EnterCualquieraEjecuta la celda sin moverse (en Visual Studio Code)[20]
A / BComandoInserta una celda arriba / abajo[20][22]
M / YComandoConvierte la celda en Markdown / en código[20][22]
D, DComandoBorra la celda[20][22]
ZComandoDeshace el último cambio, incluso una celda borrada[20]
SComandoGuarda el cuaderno[22]
I, IComandoInterrumpe un cálculo que tarda demasiado[6]
0, 0ComandoReinicia el kernel[6]
Shift + Tab—Muestra la ayuda del objeto donde está el cursor (en JupyterLab)[18]
Ctrl + F—Busca texto dentro del cuaderno[6]

La lista completa está en el menú Ayuda, opción Keyboard Shortcuts [6]. La documentación del notebook clásico sugiere aprenderlos en un orden aproximado: navegar y ejecutar, guardar, cambiar el tipo de celda, crear celdas, editarlas y, al final, interrumpir o reiniciar el kernel [22].

¿Cómo exportar un notebook a HTML o PDF?

Un cuaderno se exporta con nbconvert, la herramienta de Jupyter que convierte archivos .ipynb a otros formatos [6][23]. Para entregar un informe sirven sobre todo dos: HTML, que se abre en cualquier navegador sin instalar Jupyter, y PDF. nbconvert 7.17.2 también exporta a LaTeX, Markdown, diapositivas y programa ejecutable, entre otros [23].

# Página web (HTML) muy parecida a la vista de JupyterLab
jupyter nbconvert --to html informe.ipynb

# PDF a través de LaTeX (exige tener TeX instalado)
jupyter nbconvert --to pdf informe.ipynb

# PDF sin LaTeX: dibuja el HTML con un navegador Chromium automatizado
pip install nbconvert[webpdf]
jupyter nbconvert --to webpdf --allow-chromium-download informe.ipynb

El PDF es el formato más exigente. La vía normal usa XeLaTeX, un motor de TeX que hay que instalar aparte, y sin una instalación completa la conversión estándar puede fallar [24]. La alternativa webpdf necesita la librería playwright, que descarga su propio Chromium si se le autoriza [24]. Para un informe interno, el HTML suele bastar.

Visual Studio Code exporta desde el menú del cuaderno a .py, PDF o HTML; para el PDF también exige TeX [20]. Si lo que quiere es publicar el análisis como una aplicación web interactiva, con herramientas como Streamlit, eso pertenece a la visualización de datos.

Malas prácticas del notebook: orden de ejecución, estado oculto y otras trampas

Cuatro malas prácticas arruinan un notebook. Son ejecutar las celdas en desorden, dejar estado oculto en el kernel, usar rutas absolutas a los archivos y escribir credenciales dentro de las celdas. Pimentel y sus coautores trabajaban en la Universidade Federal Fluminense, en Niterói (Brasil), y en la Universidad de Nueva York. Su estudio de 2019 mide las dos primeras; la del estado oculto, como riesgo y no como certeza [25]. Las rutas absolutas no tienen medida propia: el estudio cuenta los errores de archivo no encontrado, que atribuye a rutas absolutas o a datos ausentes [25]. Para medir, intentó ejecutar cuadernos públicos de GitHub [25].

João Felipe Pimentel, Leonardo Murta, Vanessa Braganholo y Juliana Freire buscaron repositorios creados entre enero de 2013 y el 16 de abril de 2018 [25]. Luego trataron de correr los cuadernos de Python cuyo orden de ejecución no tenía ambigüedad. La tabla resume lo que encontraron:

Medición del estudioResultado
Cuadernos únicos reunidos1.159.166, de 264.023 repositorios [25]
Cuadernos de Python que intentaron ejecutar863.878 [25]
Se ejecutaron sin errores24,11 % [25]
Produjeron los mismos resultados4,03 % [25]
Entre los cuadernos con orden de ejecución sin ambigüedad, los que tenían celdas fuera de orden36,36 % [25]
Ejecuciones que fallaron por librerías ausentes (ImportError y ModuleNotFoundError)29,23 % [25]
Ejecuciones que fallaron por una variable no definida (NameError)14,53 % [25]
Cuadernos que fallaron por archivos no encontrados (FileNotFoundError e IOError)12,59 % [25]

El estudio tiene un alcance que conviene leer completo. Cada celda guarda un número, el contador, con el turno en que se corrió. Los autores ejecutaron las celdas en el orden de esos contadores, no de arriba abajo, y reconocen que ese orden también podría explicar la baja tasa del 4,03 % [25]. Advierten además que algunos cuadernos pueden no haber sido pensados para reproducirse, como los ejercicios de un curso [25].

Aun con esas cautelas, el patrón coincide con las críticas que el artículo recoge: estado oculto, orden de ejecución inesperado y código fragmentado [25]. Así se evitan:

  1. Reinicie y ejecute todo antes de compartir. El estudio recomienda volver a correr el cuaderno de arriba abajo antes de subirlo, para restaurar los contadores y reducir el efecto del estado oculto y de las celdas fuera de orden [25]. Es la prueba de la celda 2 del ejemplo anterior.
  2. Ponga las importaciones al comienzo. Es otra de sus recomendaciones, y ayuda a ver de un vistazo qué librerías necesita el cuaderno [25].
  3. Declare las dependencias con sus versiones. El estudio propone archivos de requisitos con versiones fijas, porque muchas fallas vinieron de librerías que faltaban [25].
  4. Use rutas relativas. Los errores de archivo no encontrado aparecen cuando el cuaderno apunta a una ruta absoluta, como C:\Users\Ana\datos.csv, o cuando los datos no viajan con él [25].
  5. No escriba contraseñas ni claves en una celda. El .ipynb guarda el código y sus resultados en texto plano, pensado para compartirse [6]. Una clave escrita ahí viaja con el archivo. Visual Studio Code, por ejemplo, puede cargar variables de entorno desde un archivo .env aparte [20].

La primera regla se puede automatizar. nbconvert ejecuta el cuaderno completo en un kernel nuevo y, por defecto, se detiene si alguna celda produce un error [23]:

# Corre el cuaderno de arriba abajo en un kernel limpio y guarda una copia con los resultados
jupyter nbconvert --to notebook --execute informe.ipynb

Y este programa corto, que solo usa la biblioteca estándar de Python, revisa un cuaderno sin abrir Jupyter. Señala las celdas que nunca se ejecutaron, las que se corrieron fuera de orden y las que parecen contener una credencial:

# Revisa un cuaderno .ipynb sin abrir Jupyter: solo con la biblioteca estándar
import json
import sys

PALABRAS_SENSIBLES = ("password", "contraseña", "clave", "token", "secret")

ruta = sys.argv[1]  # por ejemplo: python revisar_cuaderno.py informe.ipynb
with open(ruta, encoding="utf-8") as archivo:
    cuaderno = json.load(archivo)  # un .ipynb es un archivo de texto en formato JSON

anterior = 0
for numero, celda in enumerate(cuaderno["cells"], start=1):
    if celda["cell_type"] != "code":
        continue  # las celdas de texto (Markdown) no se ejecutan
    texto = "".join(celda["source"])
    contador = celda.get("execution_count")
    if contador is None:
        print(f"Celda {numero}: nunca se ejecutó")
    elif contador < anterior:
        print(f"Celda {numero}: se ejecutó antes que la anterior ({contador} < {anterior})")
    else:
        anterior = contador
    if any(p in texto.lower() for p in PALABRAS_SENSIBLES):
        print(f"Celda {numero}: parece contener una credencial")

Lo probé sobre un cuaderno con una celda corrida fuera de orden y otra con una clave sin ejecutar. Imprimió tres avisos: «Celda 4: se ejecutó antes que la anterior (3 < 4)», «Celda 5: nunca se ejecutó» y «Celda 5: parece contener una credencial». La búsqueda por palabras es tosca y puede fallar en ambos sentidos. Sirve como alarma, no como garantía.

De IPython a Jupyter: la historia en cuatro fechas

Jupyter no nació como Jupyter. Empezó como IPython, una consola interactiva para Python que Fernando Pérez inició en 2001, cuando era estudiante de posgrado en la Universidad de Colorado en Boulder [10]. El nombre actual viene de los tres lenguajes que el proyecto soportó al principio: Julia, Python y R [8].

AñoHechoFuente
2001Fernando Pérez inicia IPython en la Universidad de Colorado en Boulder[10]
2014Nace el Proyecto Jupyter a partir de IPython, como proyecto sin ánimo de lucro y de código abierto[11]
2016Kluyver y coautores presentan los cuadernos de Jupyter como formato para publicar flujos de trabajo reproducibles[7]
2017La Association for Computing Machinery (ACM), una asociación de computación, entrega su premio a sistemas de software al Proyecto Jupyter[26]

La ACM premió a quince miembros del consejo directivo del proyecto. Escribió que sus herramientas, entre ellas IPython, Jupyter Notebook y JupyterHub, «se han convertido en un estándar de facto para el análisis de datos en la investigación, la educación, el periodismo y la industria» [26].

Lo que el tutorial de LIGO no garantizaba

Vuelvo al cuaderno de las ondas gravitacionales. Su última actualización es de julio de 2017, y hoy el propio centro lo marca como un tutorial que ya no se mantiene [3]. En su lista de requisitos nombraba cuatro librerías de Python, sin indicar versiones [3].

Ese es el punto ciego que midieron Pimentel y sus coautores. El cuaderno promete que el análisis se puede repetir; la promesa se cumple solo si quien lo escribe cuida el orden, las versiones y las rutas. Jupyter da el formato. La disciplina la pone el analista.

Tomo partido: un cuaderno que no corre de arriba abajo en un kernel limpio no está terminado, por bonito que se vea. Quien reciba el boletín trimestral del ejemplo debería poder reabrir el cuaderno y obtener las mismas cifras. Para lograrlo basta una orden en la terminal antes de enviar el archivo.

Si quiere practicar con algo concreto, el siguiente paso es el análisis de datos: qué preguntas hacerle a una tabla antes de abrir el primer cuaderno. Y si un término de esta guía quedó en el aire, el glosario de ciencia de datos lo explica.

Preguntas frecuentes

¿Jupyter Notebook es gratis? Sí. El proyecto declara que su software será siempre de código abierto, libre para todos, bajo la licencia BSD modificada [11]. El paquete de Notebook en el índice oficial de Python lo publica con la licencia BSD de 3 cláusulas [12]. Lo que sí cuesta es el computador, la conexión para descargarlo y las horas de práctica.

¿Necesito internet para usar Jupyter Notebook? Solo para instalarlo, porque pip o conda descargan los paquetes. Después, el servidor de Jupyter corre en su propio equipo y el navegador se conecta a una dirección local [6]. Si trabaja detrás del cortafuegos de una empresa, la documentación de JupyterLab lista los sitios que el área de sistemas puede habilitar para que la instalación funcione [14].

¿Cómo abro un archivo .ipynb si no tengo Jupyter instalado? Visual Studio Code lo abre y lo ejecuta, siempre que tenga un entorno con ipykernel [20]. Si el cuaderno está publicado en una dirección pública, el servicio Jupyter Notebook Viewer lo muestra como página web estática [6]. Y quien sí tenga Jupyter puede enviárselo convertido a HTML con nbconvert [23].

¿Jupyter sirve para R y otros lenguajes, o solo para Python? Sirve para muchos lenguajes. El kernel de Python viene por defecto en varias aplicaciones de Jupyter. Para R, Julia u otro lenguaje se instala el kernel que corresponda [9]. El propio nombre lo recuerda: Julia, Python y R [8]. Antes de instalar uno, revise si se sigue manteniendo, porque la documentación advierte que algunos pueden no ser estables [9].

¿Por qué un cuaderno que funcionaba ayer hoy da NameError? La causa típica es el estado oculto: ayer el kernel tenía en memoria una variable creada por una celda que hoy no se corrió, o que se borró [8][25]. Si el servidor se apagó o el kernel se reinició, los resultados viejos siguen a la vista, pero el kernel arranca vacío. La solución es reiniciar y ejecutar todas las celdas en orden; si el error persiste, falta una celda o está mal ubicada.

Referencias

Las citas en otro idioma son traducción propia.

  1. LIGO Scientific Collaboration y Virgo Collaboration. GW150914: Data release for event GW150914 — el evento ocurrió el «September 14 2015, 09:50:45 UTC» y se detectó en datos de los observatorios LIGO Hanford y LIGO Livingston; la página ofrece los datos y un tutorial de procesamiento como programa de Python o como «iPython Notebook». GWOSC: Data release for event GW150914 — Consultada: 2026-11-09.
  2. Abbott, B. P. et al. (LIGO Scientific Collaboration and Virgo Collaboration). Observation of Gravitational Waves from a Binary Black Hole Merger, Physical Review Letters, vol. 116, 061102 — publicado el 11 de febrero de 2016 según los metadatos del DOI. Physical Review Letters: DOI 10.1103/PhysRevLett.116.061102 — Consultada: 2026-11-09.
  3. LIGO Open Science Center. Signal Processing with GW150914 Open Data (tutorial) — «This ipython notebook (or associated python script GW150914_tutorial.py ) will go through some typical signal processing tasks»; indica descargar el cuaderno, readligo.py y los datos en una carpeta y correrlo; requiere numpy, scipy, matplotlib y h5py; «Last updated July 18, 2017»; «This tutorial is no longer maintained». GWOSC: GW150914 tutorial — Consultada: 2026-11-09.
  4. Gravitational Wave Open Science Center. Tutorials — «Tutorials shown here are not used to produce results published by the LSC and Virgo collaboration»; la mayoría de los tutoriales usan Python. GWOSC: Tutorials — Consultada: 2026-11-09.
  5. Jupyter Development Team. Jupyter Notebook Documentation, versión 7.6.5 — Jupyter Notebook «is a simplified notebook authoring application»; un cuaderno computacional «is a shareable document that combines computer code, plain language descriptions, data, rich visualizations like 3D models, charts, graphs and figures, and interactive controls»; Notebook ofrece una experiencia más ligera y simplificada que JupyterLab. Jupyter Notebook 7.6.5: documentación — Consultada: 2026-11-09.
  6. Jupyter Development Team. The Jupyter Notebook, documentación de Jupyter Notebook 7.6.5 — tres tipos de celda (código, Markdown y raw); el código se envía al kernel y el resultado aparece como salida de la celda; Markdown con títulos enlazables y LaTeX; los documentos son JSON con extensión .ipynb, guardan entradas y salidas y «can be version-controlled and shared»; exportación vía nbconvert y Jupyter Notebook Viewer; privacidad: si la dirección empieza por localhost o 127.0.0.1, el servidor es el propio computador, y «Jupyter doesn’t send your data anywhere else»; jupyter notebook abre por defecto la dirección local 127.0.0.1 en el puerto 8888 y el tablero muestra la carpeta de arranque; un cuaderno abierto tiene una sesión conectada a un kernel que sigue activo si se cierra el navegador; trabajar por celdas es «much more convenient for interactive exploration than breaking up a computation into scripts»; Kernel, Interrupt (i,i) y Kernel, Restart (0,0); atajos Shift-Enter, Esc, Enter y Ctrl-F; lista completa en Help, Keyboard Shortcuts. Jupyter Notebook 7.6.5: The Jupyter Notebook — Consultada: 2026-11-09.
  7. Kluyver, Thomas; Ragan-Kelley, Benjamin; Pérez, Fernando; Granger, Brian; Bussonnier, Matthias; Frederic, Jonathan; Kelley, Kyle; Hamrick, Jessica et al. Jupyter Notebooks – a publishing format for reproducible computational workflows, en Positioning and Power in Academic Publishing: Players, Agents and Agendas, IOS Press, 2016 — resumen: «We present Jupyter notebooks, a document format for publishing code, results and explanations in a form that is both readable and executable». IOS Press: DOI 10.3233/978-1-61499-649-1-87 — Consultada: 2026-11-09.
  8. Project Jupyter. What is Jupyter?, Jupyter Documentation — Donald Knuth popularizó la programación literaria; en el ecosistema Jupyter cada intérprete interactivo se llama kernel y «holds the data and objects you create with your notebook code»; si se apaga el servidor que los contiene, se pierden las variables; el nombre viene de Julia, Python y R; Jupyter Notebook «offers a simplified, lightweight notebook authoring experience» y JupyterLab un entorno con pestañas y consola; ejemplo del profesor que usa JupyterLab a diario y Notebook para enseñar; «Jupyter software is free and open-source». Jupyter Documentation: What is Jupyter? — Consultada: 2026-11-09.
  9. Project Jupyter. Kernels (Programming Languages), Jupyter Documentation — «Kernels are programming language specific processes that run independently»; ipykernel es el kernel de referencia construido sobre IPython; la comunidad mantiene kernels de muchos otros lenguajes y muchos son de terceros, que «may or may not be stable». Jupyter Documentation: Kernels — Consultada: 2026-11-09.
  10. IPython Development Team. History, documentación de IPython 9.18.1 — «IPython was started in 2001 by Fernando Pérez while he was a graduate student at the University of Colorado, Boulder». IPython 9.18.1: History — Consultada: 2026-11-09.
  11. Project Jupyter. About Us — «Project Jupyter is a non-profit, open-source project, born out of the IPython Project in 2014»; «Jupyter will always be 100% open-source software, free for all to use and released under the liberal terms of the modified BSD license». Jupyter: About — Consultada: 2026-11-09.
  12. Python Package Index. Paquetes notebook y jupyterlab — notebook 7.6.5, publicado el 2026-11-06, licencia BSD de 3 cláusulas, requiere Python >=3.10 y depende de jupyterlab >=4.6.6,<4.7; jupyterlab 4.6.6, publicado el 2026-11-06, requiere Python >=3.10. PyPI: notebook · PyPI: jupyterlab — Consultada: 2026-11-09.
  13. Project Jupyter. Installing Jupyter — pip es «the recommended installation tool for Python»; «pip install jupyterlab» y «jupyter lab»; «pip install notebook» y «jupyter notebook»; con conda o mamba recomienda el canal conda-forge. Jupyter: Installing Jupyter — Consultada: 2026-11-09.
  14. JupyterLab Development Team. Installation, documentación de JupyterLab 4.6.6 — «conda install -c conda-forge jupyterlab»; «pip install jupyterlab»; navegadores que funcionan en su última versión: Firefox, Chrome, Safari y Edge; lista de dominios que el administrador de red puede permitir si un proxy o cortafuegos bloquea la instalación. JupyterLab 4.6.6: Installation — Consultada: 2026-11-09.
  15. Anaconda.org. conda-forge / notebook — el canal conda-forge publica el paquete notebook en su versión 7.6.5. Anaconda.org: conda-forge notebook — Consultada: 2026-11-09.
  16. Jupyter Development Team. Migrating, documentación de Jupyter Notebook 7.6.5 (actualizada el 2023-05-17) — «For the past few years, the Classic Jupyter Notebook has been in maintenance mode»; el desarrollo se movió a JupyterLab; «it was decided in late 2021 to continue developing the Jupyter Notebook application and sunrise it as Notebook 7»; nbclassic da compatibilidad con extensiones de la interfaz antigua. Jupyter Notebook 7.6.5: Migrating — Consultada: 2026-11-09.
  17. Jupyter Development Team. New features in Notebook 7 — depurador, tabla de contenido y tema oscuro; «Notebook 7 is based on JupyterLab»; experiencia centrada en el documento, «where each individual notebook opens in a separate browser tab». Jupyter Notebook 7.6.5: New features in Notebook 7 — Consultada: 2026-11-09.
  18. JupyterLab Development Team. Get Started y Notebooks, documentación de JupyterLab 4.6.6 — «JupyterLab is a next-generation web-based user interface for Project Jupyter»; documentos lado a lado con pestañas y divisiones; cuadernos, editores de texto, terminales y consolas; «JupyterLab uses the same notebook document format as the classic Jupyter Notebook»; «The keyboard shortcuts of the classic Notebook continue to work»; modos edición y comando; Shift Tab muestra información del objeto. JupyterLab 4.6.6: Get Started · JupyterLab 4.6.6: Notebooks — Consultada: 2026-11-09.
  19. Jupyter Development Team. Jupyter NbClassic y paquete nbclassic en PyPI — «The nbclassic package is the implementation of the classic Jupyter Notebook 6 as a Jupyter Server extension»; «pip install nbclassic»; «jupyter nbclassic»; versión 1.3.3 del 2025-09-16. NbClassic: documentación · PyPI: nbclassic — Consultada: 2026-11-09.
  20. Microsoft. Jupyter Notebooks in VS Code — soporte nativo a través de la extensión de Jupyter; requiere un entorno de Python con IPyKernel; comando Create: New Jupyter Notebook (Ctrl+Shift+P) y selector de kernel; atajos Ctrl+Enter, Shift+Enter, Alt+Enter, A, B, J, K, dd, z, M, Y y L; explorador de variables, diferencias por celda y depuración (Run by Line); exportación a .py, PDF o HTML, con TeX para el PDF; «Harmful code can be embedded in notebooks» y modo restringido; variables de entorno desde un archivo .env. VS Code: Jupyter Notebooks in VS Code — Consultada: 2026-11-09.
  21. Microsoft. Visual Studio Code FAQ — «Yes, VS Code is free for private or commercial use». VS Code: FAQ — Consultada: 2026-11-09.
  22. Jupyter Development Team. Notebook Basics, documentación de NbClassic — interfaz modal con modo edición y modo comando; orden recomendado para aprender los atajos del modo comando: «enter, shift-enter, up/k, down/j», «s», «y, m, 1-6, t», «a, b», «x, c, v, d, z» y «i, 0 (press twice)». NbClassic: Notebook Basics — Consultada: 2026-11-09.
  23. Jupyter Development Team. Using as a command line tool, documentación de nbconvert 7.17.2 — «jupyter nbconvert –to FORMAT notebook.ipynb»; formatos HTML, LaTeX, PDF, WebPDF, diapositivas Reveal.js, Markdown, Ascii, reStructuredText, programa ejecutable y notebook; la plantilla HTML lab «looks very similar to the JupyterLab interactive view»; «jupyter nbconvert –to notebook –execute mynotebook.ipynb»; por defecto aborta si una celda produce una excepción. nbconvert 7.17.2: Using as a command line tool — Consultada: 2026-11-09.
  24. Jupyter Development Team. Installation, documentación de nbconvert 7.17.2 — «pip install nbconvert» o «conda install nbconvert»; para –to pdf usa LaTeX con XeTeX y, sin una instalación completa de TeX, la conversión estándar a PDF puede no funcionar; para –to webpdf requiere playwright, instalable con nbconvert[webpdf], que descarga Chromium con –allow-chromium-download. nbconvert 7.17.2: Installation — Consultada: 2026-11-09.
  25. Pimentel, João Felipe; Murta, Leonardo; Braganholo, Vanessa; Freire, Juliana. A Large-Scale Study About Quality and Reproducibility of Jupyter Notebooks, 2019 IEEE/ACM 16th International Conference on Mining Software Repositories (MSR), pp. 507-517 — Universidade Federal Fluminense (Niterói, Brasil) y New York University; corpus de 1.159.166 cuadernos únicos de 264.023 repositorios creados entre el 1 de enero de 2013 y el 16 de abril de 2018; de 863.878 ejecuciones intentadas, «only 24.11% executed without errors and only 4.03% produced the same results»; 36,36 % con celdas fuera de orden; fallas por ImportError/ModuleNotFoundError (29,23 %), NameError (14,53 %) y FileNotFoundError/IOError (12,59 %), estas últimas por rutas absolutas o datos ausentes; ejecutaron en el orden de los contadores, lo que «may also be the reason for the meager rate»; muchos cuadernos son ejercicios; buenas prácticas: importaciones al comienzo, dependencias con versiones fijas, rutas relativas y «Re-run notebooks top to bottom before committing». IEEE: DOI 10.1109/MSR.2019.00077 · Copia de los autores (Leonardo Murta): PDF — Consultada: 2026-11-09.
  26. Association for Computing Machinery. Software System Award — «2017 ACM Software System Award» a quince miembros del Project Jupyter Steering Council; herramientas como IPython, Jupyter Notebook y JupyterHub «have become a de facto standard for data analysis in research, education, journalism and industry». ACM: Software System Award · Internet Archive: copia de la página de ACM — Consultada: 2026-11-09.
Cómo investigamos esta página
  • Pregunta que responde: qué es Jupyter Notebook, cómo se instala y usa hoy, y qué prácticas lo vuelven reproducible
  • Fuentes: identificadas 42 → incluidas 26
  • Criterios de inclusión: documentación oficial de Jupyter, VS Code y PyPI, artículos con DOI y GWOSC, leídos en texto crudo
  • Fecha de corte de los datos: 2026-11-09
Scroll to Top