0% encontró este documento útil (0 votos)
37 vistas5 páginas

Tuto ETL Con Python

Este tutorial explica cómo realizar un proceso ETL básico utilizando Python y la librería pandas, centrándose en un archivo de datos de ventas. El proceso incluye la extracción de datos, limpieza y transformación, así como la carga de datos limpios en un nuevo archivo CSV. Se proporcionan ejemplos de código para cada fase del proceso ETL.

Cargado por

Frandom86
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
37 vistas5 páginas

Tuto ETL Con Python

Este tutorial explica cómo realizar un proceso ETL básico utilizando Python y la librería pandas, centrándose en un archivo de datos de ventas. El proceso incluye la extracción de datos, limpieza y transformación, así como la carga de datos limpios en un nuevo archivo CSV. Se proporcionan ejemplos de código para cada fase del proceso ETL.

Cargado por

Frandom86
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

TUTORIAL_ETL.

md 2025-09-16

Tutorial: Cómo Realizar un Proceso ETL con Python y


Pandas
Ronaldo Ballesteros Salguero - Data Analyst & Jr. Data Scientist
Linkedin: [Link]
Este tutorial te guiará a través de un proceso de ETL (Extract, Transform, Load) básico utilizando Python
y la librería pandas. Usaremos un archivo de datos de ventas (datos_crudos.csv) como ejemplo.
¿Qué es ETL?
ETL es un proceso fundamental en el manejo de datos que consiste en tres fases:
. Extract (Extraer): Leer o extraer los datos desde una o varias fuentes (ej. archivos CSV, bases de
datos, APIs).
. Transform (Transformar): Limpiar, modificar y dar formato a los datos. Esta es la fase más compleja
y puede incluir tareas como:
Limpieza de valores nulos o incorrectos.
Conversión de tipos de datos (ej. de texto a número o fecha).
Cálculo de nuevas columnas.
Filtrado de información no necesaria.
. Load (Cargar): Cargar los datos ya transformados a un destino final (ej. una base de datos, un data
warehouse, o un nuevo archivo).

Prerrequisitos
Necesitarás tener Python y la librería pandas instalados. Si no tienes pandas, puedes instalarlo con el
siguiente comando en tu terminal:

pip install pandas

Escenario
Tenemos un archivo datos_crudos.csv con datos de ventas que contiene algunos errores e
inconsistencias. Nuestro objetivo es limpiarlo y prepararlo para un análisis posterior.
El archivo datos_crudos.csv que hemos creado contiene lo siguiente:

ID_Producto,Fecha_Venta,Cantidad,Precio_Unitario,Ciudad
101,2025-01-05,10,$50.00,Bogotá
102,2025-01-06,5,100.00,Medellín
103,2025-01-07,,75.50,Bogotá

1/5
TUTORIAL_ETL.md 2025-09-16

101,2025-01-08,8,$50.00,Cali
104,2025-01-09,12,120.00,
102,2025-01-10,3,100.00,Medellín
101,sin-fecha,15,$50.00,Bogotá
103,2025-01-12,6,75.50,Cali

Paso 1: Extraer
Primero, vamos a extraer los datos del archivo datos_crudos.csv y cargarlos en un DataFrame de
pandas.

Crea un script de Python (por ejemplo, proceso_etl.py) y añade el siguiente código:

import pandas as pd

# Ruta del archivo de origen


ruta_origen =
'/Users/ronaldoballesterossalguero/Downloads/datos_crudos.csv'

# Extraer los datos a un DataFrame


df = pd.read_csv(ruta_origen)

# Mostrar los primeros registros para verificar


print("Datos extraídos (crudos):")
print(df)
print("\n" + "="*30 + "\n")

Paso 2: Transformar
Esta es la fase donde realizaremos la limpieza y las modificaciones.
2.1. Limpiar la columna 'Precio_Unitario'
El precio tiene el símbolo $ y está como texto. Necesitamos convertirlo a un número.

# (Continuación del script)

# Copiamos el DataFrame para no modificar el original directamente


df_transformado = [Link]()

# Quitar el símbolo '$' y convertir a número (float)


df_transformado['Precio_Unitario'] =
df_transformado['Precio_Unitario'].replace({r'\$': ''},
regex=True).astype(float)

2.2. Manejar valores nulos en 'Cantidad' y 'Ciudad'


2/5
TUTORIAL_ETL.md 2025-09-16

Tenemos un valor nulo en Cantidad y otro en Ciudad. Para Cantidad, asumiremos que si está vacío es 0.
Para Ciudad, lo marcaremos como Desconocida.

# (Continuación del script)

# Rellenar valores nulos en 'Cantidad' con 0


df_transformado['Cantidad'] = df_transformado['Cantidad'].fillna(0)

# Rellenar valores nulos en 'Ciudad' con 'Desconocida'


df_transformado['Ciudad'] =
df_transformado['Ciudad'].fillna('Desconocida')

2.3. Corregir y convertir la columna 'Fecha_Venta'


Haz un valor "sin-fecha". Lo trataremos como un valor nulo y luego convertiremos la columna a tipo
datetime.

# (Continuación del script)

# Convertir fechas inválidas a NaT (Not a Time)


df_transformado['Fecha_Venta'] =
pd.to_datetime(df_transformado['Fecha_Venta'], errors='coerce')

errors='coerce' convierte cualquier texto que no pueda interpretar como fecha en NaT (un tipo de nulo
para fechas).
2.4. Crear una nueva columna 'Venta_Total'
Vamos a calcular el total de la venta para cada fila.

# (Continuación del script)

# Asegurarse de que 'Cantidad' es de tipo numérico (entero)


df_transformado['Cantidad'] = df_transformado['Cantidad'].astype(int)

# Calcular la nueva columna


df_transformado['Venta_Total'] = df_transformado['Cantidad'] *
df_transformado['Precio_Unitario']

2.5. Filtrar datos no deseados


Finalmente, vamos a suponer que no nos interesan las filas donde la fecha es nula.

# (Continuación del script)

3/5
TUTORIAL_ETL.md 2025-09-16

# Eliminar filas donde la fecha de venta no es válida


df_transformado.dropna(subset=['Fecha_Venta'], inplace=True)

# Mostrar el DataFrame transformado para verificar


print("Datos transformados (limpios):")
print(df_transformado)
print("\n" + "="*30 + "\n")

Paso 3: Cargar
Ahora que los datos están limpios, los cargaremos en un nuevo archivo CSV.

# (Continuación del script)

# Ruta del archivo de destino


ruta_destino =
'/Users/ronaldoballesterossalguero/Downloads/datos_limpios.csv'

# Cargar el DataFrame transformado a un nuevo archivo CSV


# index=False para no guardar el índice del DataFrame como una columna
df_transformado.to_csv(ruta_destino, index=False)

print(f"¡Proceso ETL completado! Los datos limpios se han guardado en:


{ruta_destino}")

Código Completo del Script


Aquí está el script proceso_etl.py completo para que lo ejecutes:

import pandas as pd

# --- 1. EXTRACT ---


ruta_origen =
'/Users/ronaldoballesterossalguero/Downloads/datos_crudos.csv'
df = pd.read_csv(ruta_origen)
print("Datos extraídos (crudos):")
print([Link]()) # .head() para no imprimir todo si es muy grande
print("\n" + "="*30 + "\n")

# --- 2. TRANSFORM ---


df_transformado = [Link]()

# 2.1. Limpiar Precio_Unitario


df_transformado['Precio_Unitario'] =
df_transformado['Precio_Unitario'].replace({r'\$': ''},

4/5
TUTORIAL_ETL.md 2025-09-16

regex=True).astype(float)

# 2.2. Manejar nulos en Cantidad y Ciudad


df_transformado['Cantidad'] = df_transformado['Cantidad'].fillna(0)
df_transformado['Ciudad'] =
df_transformado['Ciudad'].fillna('Desconocida')

# 2.3. Corregir y convertir Fecha_Venta


df_transformado['Fecha_Venta'] =
pd.to_datetime(df_transformado['Fecha_Venta'], errors='coerce')

# 2.4. Crear Venta_Total


df_transformado['Cantidad'] = df_transformado['Cantidad'].astype(int)
df_transformado['Venta_Total'] = df_transformado['Cantidad'] *
df_transformado['Precio_Unitario']

# 2.5. Filtrar filas sin fecha


df_transformado.dropna(subset=['Fecha_Venta'], inplace=True)

print("Datos transformados (limpios):")


print(df_transformado)
print("\n" + "="*30 + "\n")

# --- 3. LOAD ---


ruta_destino =
'/Users/ronaldoballesterossalguero/Downloads/datos_limpios.csv'
df_transformado.to_csv(ruta_destino, index=False)

print(f"¡Proceso ETL completado! Los datos limpios se han guardado en:


{ruta_destino}")

Al ejecutar este script, leerá datos_crudos.csv, aplicará todas las transformaciones y guardará el
resultado en datos_limpios.csv.
Ronaldo Ballesteros Salguero - Data Analyst & Jr. Data Scientist
Linkedin: [Link]

5/5

También podría gustarte