Transformar

Introducción a la ingeniería de datos

Vincent Vankrunkelsven

Data Engineer @ DataCamp

Tipos de transformaciones

customer_id email state created_at
1 [email protected] New York 2019-01-01 07:00:00

 

  • Selección de atributo (p. ej., 'email')
  • Traducción de valores de código (p. ej., 'New York' -> 'NY')
  • Validación de datos (p. ej., fecha en 'created_at')
  • División de columnas en varias
  • Unión desde varias fuentes
Introducción a la ingeniería de datos

Ejemplo: split (Pandas)

customer_id email username domain
1 [email protected] jane.doe theweb.com
customer_df # Pandas DataFrame con datos de clientes

# Divide la columna email en 2 usando el símbolo '@'
split_email = customer_df.email.str.split("@", expand=True)

# En este punto, split_email tendrá 2 columnas: la primera # con todo antes de @ y la segunda con todo después de @ # Crea 2 columnas nuevas con el DataFrame resultante. customer_df = customer_df.assign( username=split_email[0], domain=split_email[1], )
Introducción a la ingeniería de datos

Transformar en PySpark

Extrae datos en PySpark

import pyspark.sql

spark = pyspark.sql.SparkSession.builder.getOrCreate()

spark.read.jdbc("jdbc:postgresql://localhost:5432/pagila",
"customer",
properties={"user":"repl","password":"password"})
Introducción a la ingeniería de datos

Ejemplo: join

Nueva tabla de valoraciones

customer_id film_id rating
1 2 1
2 1 5
2 2 3
... ... ...

La tabla de clientes

customer_id first_name last_name ...
1 Jane Doe ...
2 Joe Doe ...
... ... ... ...

 

customer_id coincide con la tabla de valoraciones

Introducción a la ingeniería de datos

Ejemplo: join (PySpark)

customer_df # PySpark DataFrame con datos de clientes
ratings_df # PySpark DataFrame con datos de valoraciones

# Agrupar valoraciones ratings_per_customer = ratings_df.groupBy("customer_id").mean("rating")
# Unir por ID de cliente customer_df.join( ratings_per_customer, customer_df.customer_id==ratings_per_customer.customer_id )
Introducción a la ingeniería de datos

¡Vamos a practicar!

Introducción a la ingeniería de datos

Preparing Video For Download...