Transformaciones de Datos ETL con Python y MySQL

Clase 20 de 24Curso 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?

  1. Filtrado de actores: Identificaremos aquellos actores cuyo nombre empieza con la letra 'a'.
  2. Creación de una columna completa para el nombre: Concatenaremos las columnas first name y last name para formar la columna full name.
  3. Calcular la longitud del nombre: Crearemos namelends, que reflejará la longitud total del nombre.
  4. Conversiones a mayúsculas: Todos los nombres se convertirán a mayúsculas.
  5. Filtrado por longitud del nombre: Mantendremos actores cuyo full name sea mayor de diez caracteres.
  6. Cálculo del año de registro: Determinaremos el año en el cual cada actor se registró.
  7. Agrupación por apellido: Agruparemos los datos por last name y contaremos cuántos actores comparten el mismo apellido.
  8. Indicador de nombre único: Añadiremos una columna que marca si un actor tiene un nombre único.
  9. Estatus del actor: Se agregará un estatus para indicar si el actor tiene más de diez años en la base de datos.
  10. 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:

  1. 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
    
  1. 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()
    
  1. 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)
    
  1. 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!