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

Por Qué las Contraseñas Largas son más Seguras que las Complejas

"Tu contraseña debe tener al menos 8 caracteres, una mayúscula, un número y un símbolo…

8 horas ago

Gini, KS y AUC: Cómo Medir la Calidad de un Modelo de Credit Scoring

Cuando un analista de riesgo presenta un nuevo scorecard ante el comité de dirección, la…

2 días ago

Curiosidad: De dónde vienen foo, bar y foobar

Si revisáis código o documentación de otros programadores, tarde o temprano os toparéis con dos…

1 semana ago

BG/NBD + Gamma/Gamma: el modelo probabilístico para CLV en compras continuas

Los dos artículos anteriores cubrieron el CLV clásico —una fórmula útil pero que trata a…

1 semana ago

Errores habituales al trabajar con DataFrames grandes en Pandas (y cómo evitarlos)

Hay un momento muy concreto en la vida de casi todo análisis: el código que…

2 semanas ago

Champion vs Challenger: Cómo los Bancos Validan Modelos Nuevos antes de Ponerlos en Producción

Has construido un nuevo modelo de credit scoring. Las métricas de validación son mejores que…

2 semanas ago

This website uses cookies.