Transformaciones de Datos con Python y SQL
Clase 21 de 24 • Curso de ETL e ingesta de datos con Python
Contenido del curso
Técnicas Efectivas de Transformación de Datos
- 5
Lectura y Exploración de Archivos CSV con Pandas en Python
00:00 min - 6
Manejo de Archivos Excel con Pandas para Procesos ETL
00:00 min - 7
Ingesta de Datos desde APIs con Python
00:00 min - 8
Conexión y consulta de bases de datos en Python con SQLite3 y SQLAlchemy
00:00 min - 9
Series y DataFrames en Pandas: Diferencias y Usos Prácticos
00:00 min - 10
Métricas Clave en el Perfilado de Datos para Análisis de Calidad
00:00 min - 11

Limpieza de Datos en Python con Pandas
08:04 min - 12
Filtrado, Selección y Transformación de Datos con Pandas
00:00 min - 13
Agrupación y Resumen de Datos con Pandas
00:00 min - 14

Manipulación Avanzada de Datos con Python y Pandas
09:06 min
Carga de Datos y Proyecto Final
- 15
Exportación de DataFrames a CSV con Pandas paso a paso
00:00 min - 16
Gestión de Datos: Carga Completa vs. Carga Incremental en Python
00:00 min - 17
Partición de Datos en Archivos CSV con Pandas
00:00 min - 18

Carga Incremental de Datos en Archivos Excel con Python
05:10 min - 19

Importación de la Base de Datos Sakila en MySQL Workbench
04:52 min - 20

Transformaciones de Datos ETL con Python y MySQL
04:18 min - 21

Transformaciones de Datos con Python y SQL
Viendo ahora - 22

Buenas prácticas y errores comunes en procesos ETL
04:17 min - 23

Carga y Validación de Datos en Sakila ETL con Python y SQL
06:29 min - 24

Fundamentos de ETL con Python: Extracción, Transformación y Carga de Datos
01:34 min
¿Cómo transformar datos en Python y MySQL?
Transformar datos es un proceso esencial en la manipulación de bases de datos. A menudo, es necesario manipular los datos mediante diversas transformaciones para adaptarse a los requerimientos específicos del análisis. En esta guía exploramos cómo llevar a cabo estas transformaciones tanto en Python como en MySQL, resaltando la importancia de obtener resultados coherentes y precisos en ambas plataformas.
¿Cómo se realiza el filtrado de datos?
La primera transformación que realizaremos es filtrar los actores cuyo primer nombre comienza con la letra 'A'. Este es un excelente ejemplo de la facilidad y potencia de las funciones de filtrado en Python.
# Filtrando actores con primer nombre que comienza con 'A' actores_filtrados = datos_actores[datos_actores['first_name'].str.startswith('A')].copy()
En MySQL, el equivalente es usar la cláusula LIKE para seleccionar registros relevantes:
SELECT * FROM actor WHERE first_name LIKE 'A%';
Este proceso es crucial para verificar que las transformaciones logren el mismo resultado en ambas plataformas, lo cual es vital para la consistencia de los datos.
¿Cómo concatenar y calcular longitudes?
Para concatenar los nombres (first name y last name) y crear una nueva columna llamada full_name en Python, simplemente usamos:
# Concatenar nombre y apellido datos_actores['full_name'] = datos_actores['first_name'] + " " + datos_actores['last_name']
En MySQL, esta tarea se realizaría con la función CONCAT:
SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM actor;
Además, podemos calcular la longitud de full_name de la siguiente manera:
# Calcular la longitud del nombre completo datos_actores['name_length'] = datos_actores['full_name'].apply(len)
Mientras que en MySQL usamos:
SELECT LENGTH(CONCAT(first_name, ' ', last_name)) AS name_length FROM actor;
¿Cómo aplicar transformaciones adicionales?
Existen diversas transformaciones que podemos realizar, tales como cambiar los nombres a mayúsculas o filtrar según la longitud del nombre completo. Estas transformaciones nos permiten manipular y entender mejor nuestros datos:
# Convertir a mayúsculas datos_actores['first_name'] = datos_actores['first_name'].str.upper() datos_actores['last_name'] = datos_actores['last_name'].str.upper() # Filtrar por longitud del nombre actores_filtrados = datos_actores[datos_actores['name_length'] > 10]
Para MySQL, utilizamos las funciones UPPER y cláusulas adicionales para el filtrado:
SELECT UPPER(first_name) AS first_name, UPPER(last_name) AS last_name FROM actor; SELECT * FROM actor WHERE LENGTH(CONCAT(first_name, ' ', last_name)) > 10;
¿Cómo manejar datos temporales y agrupamientos?
Los métodos de transformación permiten manejar datos temporales, como calcular el año de registro de un actor:
# Calcular el año de registro datos_actores['registration_year'] = pd.to_datetime(datos_actores['last_update']).dt.year
En MySQL, esto se consigue usando la función YEAR:
SELECT YEAR(last_update) AS registration_year FROM actor;
El agrupamiento y conteo por apellidos es otra transformación útil para analizar los datos:
# Agrupar por apellido y contar apellido_conteo = datos_actores.groupby('last_name').size().reset_index(name='count')
Y en MySQL, utilizamos GROUP BY:
SELECT last_name, COUNT(actor_id) as count FROM actor GROUP BY last_name;
¿Cómo evaluar datos únicos y estado de actores?
Identificar si un nombre es único y evaluar el estado de un actor basado en su tiempo en la base de datos son transformaciones que pueden ofrecer información valiosa:
# Verificar nombres únicos datos_actores['unique_name'] = datos_actores['full_name'].duplicated(False) # Añadir estado del actor datos_actores['actor_status'] = datos_actores['registration_year'].apply(lambda x: 'Activo' if 2023 - x > 10 else 'Inactivo')
Estos scripts demuestran cómo aprovechar las capacidades tanto de Python como de MySQL para gestionar y transformar datos de forma efectiva. Esta práctica nos permite tener un entendimiento más profundo de los datos y asegurarnos de que están listos para análisis y reportes. ¡Sigue practicando y observa cómo tus habilidades continúan desarrollándose!