Domina la Ciencia de Datos: Guía Definitiva para Usar Jupyter Notebook en VS Code (Con Entornos Conda)


Los cuadernos de Jupyter (o Jupyter Notebooks) se han convertido en el estándar de oro para la ciencia de datos y la investigación computacional. Su capacidad para combinar código ejecutable, visualizaciones, texto narrativo y ecuaciones en un solo documento los hace increíblemente poderosos para desarrollar, comunicar y compartir proyectos de datos.

Tradicionalmente, se usan a través de un navegador web. Pero, ¿y si pudiéramos potenciar esa experiencia con todas las ventajas de un editor de código moderno como Visual Studio Code? En esta guía, te mostraré cómo hacer precisamente eso: configurar y usar Jupyter Notebooks directamente en VS Code, evitando las limitaciones del navegador y aprovechando al máximo tu flujo de trabajo.

¿Qué es un Jupyter Notebook y por qué deberías usarlo?

Antes de entrar en materia, aclaremos el concepto. Un «cuaderno» o notebook es un documento interactivo que integra código y su resultado en un solo lugar. Puedes escribir y ejecutar fragmentos de código (como Python), y justo debajo ver la salida: tablas, gráficos, estadísticas, etc. Lo mejor es que también puedes añadir texto enriquecido (con formato Markdown) para explicar tu razonamiento, incluir fórmulas matemáticas o enlazar a fuentes externas.

En resumen: es un diario de trabajo vivo, transparente y reproducible.

Para cualquier persona que trabaje con datos, usar notebooks acelera el flujo de trabajo, facilita la comunicación de resultados y es una habilidad fundamental en la industria. Y lo mejor de todo, al ser parte del proyecto de código abierto Jupyter, es completamente gratuito.

Aunque Jupyter soporta múltiples lenguajes, en esta guía nos centraremos en Python, el más popular y para el cual VS Code ofrece la mejor integración.

¿Por qué usar Jupyter Notebooks en VS Code en lugar del Navegador?

Usar la extensión de Jupyter en VS Code transforma tu experiencia de desarrollo. La interfaz de cuaderno nativa de VS Code ofrece ventajas significativas:

  • Entorno de Desarrollo Unificado: Disfruta de todas las funcionalidades de un editor de código profesional mientras trabajas en tu notebook: resaltado de sintaxis avanzado, autocompletado inteligente (IntelliSense), refactorización de código, y soporte para extensiones como VIM, linters o formateadores de código.
  • Herramientas de Productividad: Aplica funciones de edición avanzada directamente en tus celdas, como búsqueda y reemplazo global, plegado de código o edición en múltiples líneas (multi-cursor).
  • Navegación y Gestión de Archivos: VS Code te da una visión de proyecto completa. Puedes navegar fácilmente entre tu notebook y otros archivos del proyecto (.py, .csv, .json), usar el control de versiones (Git) integrado, y tener una vista de esquema con la tabla de contenidos de tu notebook.
  • Velocidad y Eficiencia: Los archivos .ipynb se cargan casi instantáneamente. Además, VS Code incluye un visor de diferencias (diff) para notebooks, lo que facilita enormemente la revisión de cambios en el código y los resultados.
  • Depuración Avanzada: Una de las características estrella es «Ejecutar por Línea», que te permite depurar tu código paso a paso dentro del propio notebook.

Requisito Fundamental: Instalación de Anaconda (Conda)

Atención: Este es un paso crucial. Para que todo funcione de manera fluida en VS Code y evitar errores de versiones o de reconocimiento de entornos, es altamente recomendable (y para muchos usuarios, necesario) instalar Anaconda. Anaconda incluye Conda, un potente gestor de paquetes y entornos virtuales que usaremos para aislar nuestros proyectos.

¿Por qué es tan importante?

  • Aislamiento: Podrás tener un proyecto con Python 3.9 y librerías antiguas, y otro con Python 3.11 y las últimas versiones, sin que uno rompa al otro.
  • Evita errores en VS Code: Muchos problemas al seleccionar kernels o al importar librerías en VS Code se solucionan simplemente usando entornos Conda bien configurados.

Descarga e Instalación de Anaconda

  1. Descarga: Ve a la página oficial de Anaconda y descarga el instalador para tu sistema operativo (Windows, macOS, Linux).
  2. Ejecuta el Instalador: Una vez descargado, ejecuta el archivo.
  3. Acepta la Licencia: Lee y acepta los términos de la licencia.
  4. Tipo de Instalación: Selecciona «Solo para mí» (recomendado) a menos que necesites instalarlo para todos los usuarios del equipo.
  5. Ubicación de Instalación: ¡Muy importante! Elige una carpeta de destino cuya ruta no contenga espacios ni caracteres especiales (como tildes o eñes). Por ejemplo: C:\anaconda3 en Windows o /Users/tu_usuario/anaconda3 en macOS. Esto previene errores futuros.
  6. Opciones Avanzadas:
    • Marca la opción que dice «Registrar Anaconda como mi Python predeterminado» (a menos que tengas otra instalación de Python que quieras conservar como principal).
    • Deja las demás opciones por defecto.
  7. Instalación: Haz clic en «Instalar». El proceso puede tomar varios minutos. Puedes marcar la casilla «Mostrar detalles» para ver qué paquetes se están instalando.
  8. Finalización: Una vez terminado, verás una pantalla de «Gracias por instalar Anaconda». Ya puedes cerrar el instalador.

¡Felicidades! Ya tienes Conda instalado en tu sistema. Ahora podemos proceder a configurar VS Code.

Configuración Rápida de VS Code y Jupyter

Paso 1: Instalar VS Code
Si aún no lo tienes, descarga e instala Visual Studio Code desde su página oficial.

Paso 2: Instalar la Extensión de Jupyter
Abre VS Code, ve al panel de extensiones (icono de cuadrícula en la barra lateral izquierda o Ctrl+Shift+X) y busca «Jupyter». Instala la extensión desarrollada por Microsoft (ms-toolsai.jupyter). Esta extensión ya incluye por defecto mapas de teclado similares a los de Jupyter y visualizadores para gráficos (Plotly, etc.).

Paso 3: Crear o Abrir un Notebook
Puedes crear un nuevo archivo de notebook de varias formas:

  • Ve a la paleta de comandos (Ctrl+Shift+P), escribe «Crear: Nuevo cuaderno Jupyter» y selecciona la opción.
  • O simplemente crea un nuevo archivo con la extensión .ipynb.

Ya tienes un notebook funcionando en VS Code. Ahora, vamos a usar Conda para crear el «motor» (kernel) de Python que ejecutará el código de forma aislada.

Gestionando Entornos de Ejecución con Conda

Ahora que tenemos Anaconda instalada y VS Code listo, vamos a crear un entorno virtual con las librerías científicas esenciales (numpy, matplotlib, scipy) y conectarlo a nuestro notebook.

Paso 1: Abrir la Terminal Correcta
Abre la terminal integrada de VS Code (Ctrl+ñ o View > Terminal). Como ya instalamos Anaconda, el comando conda debería ser reconocido automáticamente.

Paso 2: Crear un Nuevo Entorno Conda
Ejecuta el siguiente comando para crear un entorno llamado mi_entorno con Python 3.10 (una versión muy estable):

conda create -n mi_entorno python=3.10

Confirma la creación escribiendo y cuando el sistema te lo pida.

Paso 3: Activar el Entorno
Una vez creado, actívalo con:

conda activate mi_entorno

Verás que el prompt de la terminal ahora comienza con (mi_entorno), indicando que estás dentro.

Paso 4: Instalar las Librerías Esenciales
Con el entorno activado, instala los paquetes que necesitas. El paquete ipykernel es fundamental para que Jupyter pueda reconocer tu entorno.

conda install numpy matplotlib scipy ipykernel

De nuevo, confirma con y.

Paso 5: Registrar el Entorno en Jupyter
Este paso crea un «registro» para que VS Code y Jupyter sepan que este entorno existe y pueden usarlo como kernel.

python -m ipykernel install --user --name mi_entorno --display-name "Python (mi_entorno)"

Paso 6: Seleccionar el Kernel en VS Code
Vuelve a tu notebook en VS Code. En la esquina superior derecha, haz clic en el texto que indica el kernel (probablemente dirá «Python 3…»). Se abrirá una lista. Busca y selecciona la opción que dice «Python (mi_entorno)». Si no aparece, prueba a reiniciar VS Code.

Paso 7: ¡A Codificar!
Ya puedes ejecutar celdas. Prueba con este pequeño script para verificar que todo funciona:

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import linregress
print("¡Entorno configurado correctamente!")
print(f"NumPy versión: {np.__version__}")
# Un pequeño test gráfico
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 5, 4, 5])
plt.scatter(x, y)
plt.title("Gráfico de prueba")
plt.show()

Trabajando con Python y Más Allá

Si te centras en Python, asegúrate de tener también instalada la Extensión de Python (ms-python.python) para disfrutar de la mejor experiencia de edición. La combinación de ambas extensiones es imbatible.

Característica Destacada: «Ejecutar por Línea»

Una de las herramientas más útiles para depurar es «Ejecutar por Línea». Con una celda de código seleccionada, puedes presionar F10 o hacer clic en el botón «Ejecutar por Línea» (un icono de depuración) en la barra de la celda. Esto iniciará una sesión ligera de depuración, ejecutando tu código línea por línea y actualizando el «Explorador de Variables» en tiempo real para que veas cómo cambia el valor de tus datos. Para avanzar a la siguiente línea, pulsa Ctrl+Enter. Para detener la ejecución, haz clic en el botón de parada.

Conclusión

Combinar la potencia narrativa de Jupyter Notebooks con la robustez y flexibilidad de Visual Studio Code es un cambio radical en el flujo de trabajo de ciencia de datos. Has aprendido a configurar este entorno desde cero (comenzando por la base sólida de Anaconda), a gestionar tus proyectos con entornos Conda aislados y a aprovechar funciones exclusivas como «Ejecutar por Línea». Ahora tienes las herramientas para desarrollar proyectos de datos de forma más profesional, organizada y eficiente. ¡Es hora de ponerlo en práctica!

Instalación de NILMTK y nilmtk-contrib en Windows 11: retos y solución definitiva con WSL y pyenv


En este blog hemos hablado en muchísimas ocasiones del paquete NILMTK, el famoso paquete open software para implementar la desagregacion de la energia .NILMTK es un toolkit de código abierto para Non-Intrusive Load Monitoring (NILM), cuya utilidad principal es desagregar el consumo eléctrico de una vivienda en los diferentes electrodomésticos usando solo la lectura de un medidor general. ¿Qué significa esto?

  • NILM (Non-Intrusive Load Monitoring): Técnica que estima cuánta energía consume cada aparato sin necesidad de instalar sensores individuales en cada uno.
  • NILMTK (Toolkit): Es una biblioteca en Python que ofrece algoritmos, datasets y herramientas para investigar, probar y comparar métodos de desagregación energética.

Utilidad práctica

  • Investigación en Smart Grids: Permite estudiar hábitos de consumo eléctrico sin desplegar muchos medidores.
  • Eficiencia energética: Ayuda a identificar qué aparatos consumen más y cuándo, facilitando estrategias de ahorro.
  • Aplicaciones comerciales: Puede generar facturas detalladas a partir de un único medidor, útil para compañías eléctricas o proyectos de domótica.
  • Desarrollo académico: Es usado en universidades y centros de investigación para probar nuevos algoritmos de machine learning aplicados al consumo energético.

NILMTK convierte una sola lectura de energía en información detallada por aparato, lo que lo hace valioso para investigación, eficiencia y gestión energética. Todo esto esta muy bien ….pero instalar NILMTK y nilmtk-contrib en Windows 11 puede convertirse en una tarea complicada debido a incompatibilidades de versiones de Python y dependencias antiguas usadas por las librerías. Si bien la opción inicial recomendada suele ser crear un entorno conda con Python 3.7, con frecuencia surgen problemas al manejar las versiones correctas de dependencias como numpy y pandas , por eso otro camino puede ser usar WSL ,el cual vamos a explorar en este post, pero antes veamos los problemas a los qeu nos enfrentamos con la instalación clásica con la herramienta Conda/miniconda.

Problemas frecuentes al usar Conda en Windows

Debido a que NILMTK requiere versiones específicas, comúnmente se intenta crear un entorno conda con Python 3.7:

conda create -n nilmtk-env python=3.7
conda activate nilmtk-env
conda install -c nilmtk nilmtk=0.4.3 numpy=1.19.5 -y

No obstante, se presentan errores como LibMambaUnsatisfiableError porque la dependencia hmmlearn no está disponible en el canal nilmtk. Agregar el canal conda-forge y combinar instalaciones con conda y pip es la solución habitual:

conda config --add channels conda-forge
conda config --set channel_priority flexible
conda install hmmlearn numpy=1.19.5 -y
pip install nilmtk==0.4.3 --no-deps

Sin embargo, incluso con estos ajustes, la instalación en Windows puede ser inestable. Además, NILMTK no está oficialmente publicado en PyPI, por lo que la instalación desde código fuente usando pip es habitual, lo que puede generar otras complicaciones relacionadas con versiones de Python y dependencias de construcción como hatchling.

La solución definitiva: usar WSL con pyenv y Python 3.11.5

La forma más estable es instalar NILMTK dentro de WSL (Windows Subsystem for Linux), usando pyenv para gestionar una versión compatible de Python, concretamente la 3.11.5. Esto permite:

  • Evitar conflictos de versiones de dependencias antiguas.
  • Usar la infraestructura Linux más compatible para herramientas científicas.
  • Integrar sin problemas con Visual Studio Code y Jupyter.

Pasos clave para esta instalación en WSL

  1. Prepara WSL con las dependencias básicas para compilar Python
sudo apt update && sudo apt upgrade -y
sudo apt install -y build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev \
libsqlite3-dev wget curl llvm libncurses-dev xz-utils tk-dev libffi-dev liblzma-dev python3-openssl git
  1. Instala pyenv y configúralo en tu shell
curl https://pyenv.run | bash

Incluye al final de ~/.bashrc:

export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

Carga la configuración actual:

source ~/.bashrc
  1. Instala Python 3.11.5 y crea un entorno virtual específico para NILMTK
pyenv install 3.11.5
pyenv virtualenv 3.11.5 nilmtk-env
pyenv activate nilmtk-env
  1. Actualiza pip y instala las dependencias fundamentales
pip install --upgrade pip setuptools wheel
pip install numpy pandas hmmlearn h5py matplotlib networkx nose tables tqdm
pip install git+https://github.com/nilmtk/nilm_metadata.git
  1. Clona el código fuente de NILMTK y nilmtk-contrib e instálalos
git clone https://github.com/nilmtk/nilmtk.git
git clone https://github.com/nilmtk/nilmtk-contrib.git

cd nilmtk
pip install -e . --no-deps
cd ..

cd nilmtk-contrib
pip install -r requirements.txt --no-deps
pip install -e . --no-deps
cd ..
  1. Configura Jupyter para usar el nuevo entorno
pip install jupyter ipykernel
python -m ipykernel install --user --name=nilmtk-env --display-name "Python (nilmtk-env)"
  1. Integra con Visual Studio Code

Abre VS Code desde la terminal WSL con el entorno activado:

pyenv activate nilmtk-env
code .

Selecciona el intérprete Python ubicado en:

text/home/carlo/.pyenv/versions/3.11.5/envs/nilmtk-env/bin/python

Y en los notebooks selecciona el kernel "Python (nilmtk-env)".

Conclusión

Aunque instalar NILMTK y nilmtk-contrib en Windows 11 presenta numerosos retos por incompatibilidades de versiones y dependencias, usar WSL combinado con pyenv y Python 3.11.5 proporciona un entorno estable, funcional y que integra bien con VS Code y Jupyter.

Este es el método recomendado para investigadores y desarrolladores que buscan máxima compatibilidad y facilidad para trabajar con NILMTK en Windows.