Transformaciones de Datos ETL con Python y MySQL
Clase 20 de 24 • Curso de ETL e ingesta de datos con Python
Resumen
¿Qué vamos a hacer en este proyecto de ETL?
Prepara tus herramientas y conocimientos de Python y MySQL, porque en este proyecto llevaremos a cabo un proceso completo de Extracción, Transformación y Carga (ETL). Utilizaremos como base nuestra base de datos existente llamada "Shakira". Las transformaciones a realizar son únicas y permitirán optimizar y reorganizar los datos de la tabla de actores. Al finalizar, todo lo que transformemos se transferirá a una nueva base de datos, "Shakira ETL". Descubramos los emocionantes pasos que realizaremos a continuación.
¿Cuáles son las transformaciones clave del proyecto?
- Filtrado de actores: Identificaremos aquellos actores cuyo nombre empieza con la letra 'a'.
- Creación de una columna completa para el nombre: Concatenaremos las columnas
first name
ylast name
para formar la columnafull name
. - Calcular la longitud del nombre: Crearemos
namelends
, que reflejará la longitud total del nombre. - Conversiones a mayúsculas: Todos los nombres se convertirán a mayúsculas.
- Filtrado por longitud del nombre: Mantendremos actores cuyo
full name
sea mayor de diez caracteres. - Cálculo del año de registro: Determinaremos el año en el cual cada actor se registró.
- Agrupación por apellido: Agruparemos los datos por
last name
y contaremos cuántos actores comparten el mismo apellido. - Indicador de nombre único: Añadiremos una columna que marca si un actor tiene un nombre único.
- Estatus del actor: Se agregará un estatus para indicar si el actor tiene más de diez años en la base de datos.
- Eliminación de una columna innecesaria: Finalmente, se eliminará la columna
last update
.
¿Cómo nos conectamos a MySQL con Python?
Para comenzar, debemos garantizar una conexión estable con MySQL. Aquí están los pasos para conectarnos exitosamente:
- Importación de librerías necesarias:
-
MySQL Connector
: Para manejar la conexión con MySQL. -
Pandas
: Para realizar transformaciones de datos. -
SQLAlchemy
: Para ayudar en la carga de datos. -
datetime
: Para trabajar con campos de fecha.import mysql.connector import pandas as pd import sqlalchemy from datetime import datetime
- Configuración de la conexión:
-
Se utiliza "localhost" para servidores locales.
-
Proporciona tus credenciales como usuario y contraseña.
-
Conéctate a la base de datos "Shakira".
connection = mysql.connector.connect( host='localhost', user='root', password='yourpassword', database='Shakira' ) cursor = connection.cursor()
- Extracción de datos:
-
Utilizamos una consulta SQL simple para obtener todos los campos de la tabla de actores.
-
Transformamos los resultados en un data frame de Pandas para su manipulación.
query = "SELECT * FROM actor" cursor.execute(query) results = cursor.fetchall() columns = [col[0] for col in cursor.description] df_actors = pd.DataFrame(results, columns=columns)
- Seguridad de conexiones:
-
Siempre cierra la conexión cuando no es necesaria para evitar problemas de seguridad.
connection.close()
Ahora que hemos establecido la conexión y extraído los datos iniciales de MySQL usando Python, tenemos la base perfecta para iniciar las transformaciones. Si encontraste algún obstáculo, no dudes en compartirlo y juntos encontraremos la solución. Adelante, queda mucho por explorar y aprender en próximas etapas. ¡Nos vemos en el siguiente reto ETL!