Transformaciones de Datos con Python y SQL
Clase 21 de 24 • Curso de ETL e ingesta de datos con Python
Resumen
¿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!