Ingestion Script
Drop & Truncate
Antes de continuar con la creación del script y su posterior ejecución, debemos borrar el contenido de la tabla yellow_taxi_data
o eliminar completamente la tabla de la base de datos para poder validar la correcta ejecución del script.
Para borrar el contenido de la tabla yellow_taxi_data
en SQL, puedes utilizar el comando TRUNCATE
.
TRUNCATE TABLE yellow_taxi_data;
Para eliminar la tabla yellow_taxi_data
, puedes usar el siguiente comando SQL:
DROP TABLE yellow_taxi_data;
Script .py
Convertir un Jupyter Notebook en un script de Python es un proceso sencillo y útil si deseas ejecutar tu código fuera del entorno interactivo de Jupyter. Aquí tienes dos métodos comunes para hacerlo:
Método 1: Utilizando el comando nbconvert
Jupyter Notebook proporciona una herramienta llamada nbconvert
que permite convertir notebooks a varios formatos, incluyendo scripts de Python (.py). Aquí te explico cómo usarlo:
-
Instalar nbconvert (si no lo tienes instalado): Abre tu terminal (o símbolo del sistema) y ejecuta:
pip install nbconvert
-
Convertir el notebook a un script de Python:
-
Abre tu terminal.
-
Navega al directorio donde se encuentra tu notebook (usando el comando
cd
). -
Ejecuta el siguiente comando:
jupyter nbconvert --to script notebook.ipynb
-
-
Resultado:
- Esto generará un archivo
.py
con el mismo nombre que tu notebook en el mismo directorio. Este archivo contendrá todo el código del notebook convertido en un script de Python.
- Esto generará un archivo
Método 2: Exportación manual desde Jupyter
Si prefieres no usar la terminal, puedes exportar manualmente desde el entorno de Jupyter:
-
Desde Jupyter Notebook:
- Abre tu notebook en Jupyter.
- Ve al menú
File
y seleccionaDownload as
. - Elige la opción
Python (.py)
.
-
Resultado:
- Esto descargará un archivo
.py
que contendrá todo el código de tu notebook.
- Esto descargará un archivo
Consideraciones adicionales:
-
Dependencias y entorno: Asegúrate de que todas las bibliotecas y dependencias utilizadas en tu notebook estén instaladas en el entorno donde planeas ejecutar el script de Python.
-
Limpieza manual: Después de la conversión, es posible que desees revisar el archivo
.py
generado para eliminar celdas de código que no desees incluir o para organizar el código de manera más limpia.
Estos métodos te permitirán convertir fácilmente tus Jupyter Notebooks en scripts de Python para su uso fuera del entorno de Jupyter.
Depurar el Script
El Jupyter Notebook 2-upload-data.ipynb
debe ser depurado para dejar solo lo necesario para ejecutar el script. En este caso, crearemos un nuevo notebook 3-ingest-data.ipynb
. Ahora, procederemos a agregar las líneas de código siguientes:
import pandas as pd
from sqlalchemy import create_engine
from time import time
engine = create_engine('postgresql://root:root@localhost:5432/ny_taxi')
df_iter = pd.read_csv('nyt.csv', iterator=True, chunksize=100000)
df = pd.read_csv('nyt.csv')
df.head(n=0).to_sql(name='yellow_taxi_data', con=engine, if_exists='replace')
try:
while True:
t_start = time() # Captura el tiempo de inicio del bucle
try:
df = next(df_iter) # Obtiene el siguiente chunk de datos del iterador df_iter
except StopIteration:
print("No more data to process.")
break
# Convierte las columnas de fechas a tipos datetime si es necesario
df['tpep_pickup_datetime'] = pd.to_datetime(df['tpep_pickup_datetime'])
df['tpep_dropoff_datetime'] = pd.to_datetime(df['tpep_dropoff_datetime'])
try:
# Inserta el chunk actual del DataFrame en la tabla 'yellow_taxi_data' en la base de datos usando SQLAlchemy
df.to_sql(name='yellow_taxi_data', con=engine, if_exists='append')
except Exception as e:
print(f"Error inserting chunk into database: {e}")
continue
t_end = time() # Captura el tiempo al finalizar la inserción del chunk
# Imprime el tiempo que tomó insertar el chunk actual
print(f"Inserted another chunk, took {t_end - t_start:.3f} seconds")
except Exception as e:
print(f"An error occurred during processing: {e}")
Este código es la primera versión de mejores practicas que iremos implementando más adelante.
Script Execution
Primero debemos convertir el Jupyter Notebook en un script de python por lo que lo haremos con el comando jupyter nbconvert
desde la terminal:
jupyter nbconvert --to script 3-ingest-data.ipynb
Ahora procedamos a ejecutar el script. Recuerda tener activado el entorno virtual venv
creado anteriormente.
python3 3-ingest-data.py