Python

Dividir un archivo de Jupyter Notebook en varios

Al trabajar con Jupyter Notebooks nos podemos encontrar que después de trabajar en un archivo este es demasiado grande y es mejor dividirlo en varios para trabajar mejor con ellos. Dado que puede haber cientos de celdas, copiar una a una puede ser una tarea tediosa. Afortunadamente existe una herramienta con la que se puede hacer justamente esto, dividir un archivo de Jupyter Notebook en varios.

Instalación de las herramientas

Para dividir los archivos de Jupyter Notebook se puede usar una herramienta de Python llamada nbmanips. Como la mayoría de los paquetes de Python se puede instalar fácilmente mediante pip. Por lo es necesario abrir una terminal y ejecutar el siguiente comando.

pip install nbmanips

Si todo ha ido correctamente, ahora debería ser posible llamar desde la línea de comandos al nb para dividir los Notebooks. Se puede comprobar la versión instalada con el comando

nb --version

Lo que deberá devolver la versión instalada de nbmanips.

Dividir en base a los indices de la celda

La forma más sencilla de dividir un archivo de Jupyter Notebook es indicando los índices de las celdas. Para ello solamente se tiene que ejecutar el comando np split seguido del nombre del archivo y separado por comas los índices de las celdas con los que se desea separar el contenido. Así para separar un Notebook llamado modelos.ipynb a partir de la celda 7 y 14 se puede usar:

nb split modelos.ipynb 7,14

Lo que creará tres archivos llamados modelos-0.ipynb, modelos-1.ipynb y modelos-2.ipynb conteniendo respectivamente las celdas 1 a 7, 8 a 14 y de 15 en adelante.

Consultar la posición de los contenidos

En un Notebook grande contar el número de celdas posiblemente no sea algo eficiente. Para solucionar este problema existe una función de nbmanips que nos puede generar una tabla de contenidos. Para ellos solo es necesario ejecutar el comando nb toc seguido del nombre del archivo. Para el ejemplo anterior sería la siguiente línea.

nb toc modelos.ipynb

produciendo como resultado una salida similar a la siguiente

1 Importación de los datos   [0]
2 Preprocesado de los datos  [4]
  2.1 Eliminación de nulos   [7]
3 Creación de los modelos    [11]
  3.1 Regresión logística    [13]
  3.2 Árboles de decisión    [17]
  3.3 SVM                    [21]
4 Validación de los modelos  [25]

Ahora este comando nos buscará títulos en celdas de Markdown, indicando la posición de cada uno de ellos. Por lo que si en el ejemplo se desea separa por capítulos se debería ejecutar

nb split modelos.ipynb 4,11,25

Dividir un archivo de Jupyter Notebook en base a etiquetas

Forzar la división en base a etiquetas es otra opción. Proceso que tiene dos fases, en primer lugar, identificar la posición de las etiquetas y posteriormente realizar la división. Para ello se puede ejecutar el siguiente código

select has_html_tag h1 | nb split -s modelos.ipynb

En este lo primero que se hace es buscar las celdas en las que hay un título (‘h1’), por lo tanto, comienza una sección. Para los subtítulos sería h2 y así en adelante. Posteriormente la salida del comando se envía a la función split dividiendo el Notebook original en varios.

Conclusiones

Hoy se han visto algunas funciones del paquete nbmanips con el que se puede manejar los archivos Jupyter Notebook. En concreto se ha visto cómo se puede dividir un archivo de Jupyter Notebook en varios.

Imagen de tongariro en Pixabay

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez
Tags: Jupyter

Recent Posts

Cómo Elegir el Test de Hipótesis Correcto para tus Datos

Tienes dos grupos de datos y quieres saber si son estadísticamente distintos. O tienes una…

20 horas ago

Tuplas vs Listas en Python: parecen lo mismo, pero no

A primera vista, tuplas y listas son casi idénticas. Ambas guardan colecciones ordenadas de elementos.…

3 días ago

Qué significa realmente “calidad de datos”

"Nuestros datos no tienen buena calidad." Escuchas esto constantemente en reuniones. El problema es que…

1 semana ago

Cómo Detectar Pseudo-IDs y Data Leakage en el Constructor de Scorecards

El artículo Data Leakage en Credit Scoring explicó por qué este es el error más…

1 semana ago

Cómo Verificar la Normalidad de tus Datos antes de un Test Estadístico

Antes de aplicar muchos tests estadísticos clásicos (el t-test, el ANOVA, la regresión lineal) aparece…

2 semanas ago

Docker Compose: el día a día. Cómo ver qué funciona y qué no

Si acabas de montar tu aplicación en Docker Compose, la primera pregunta que haces cada…

2 semanas ago

This website uses cookies.