Перетворення

Вступ до Data Engineering

Vincent Vankrunkelsven

Data Engineer @ DataCamp

Види перетворень

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

 

  • Вибір атрибута (напр., 'email')
  • Перетворення кодів значень (напр., 'New York' -> 'NY')
  • Валідація даних (напр., дата в 'created_at')
  • Розбиття стовпця на кілька
  • Обʼєднання з кількох джерел
Вступ до Data Engineering

Приклад: split (Pandas)

customer_id email username domain
1 [email protected] jane.doe theweb.com
customer_df # DataFrame Pandas із даними про клієнтів

# Розбийте стовпець email на 2 за символом '@'
split_email = customer_df.email.str.split("@", expand=True)

# Тепер split_email матиме 2 стовпці: перший — усе до @, # другий — усе після @ # Створіть 2 нові стовпці з отриманого DataFrame. customer_df = customer_df.assign( username=split_email[0], domain=split_email[1], )
Вступ до Data Engineering

Перетворення в PySpark

Імпортуйте дані в PySpark

import pyspark.sql

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

spark.read.jdbc("jdbc:postgresql://localhost:5432/pagila",
"customer",
properties={"user":"repl","password":"password"})
Вступ до Data Engineering

Приклад: join

Нова таблиця оцінок

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

Таблиця клієнтів

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

 

customer_id збігається з таблицею оцінок

Вступ до Data Engineering

Приклад: join (PySpark)

customer_df # DataFrame PySpark із даними про клієнтів
ratings_df # DataFrame PySpark із даними про оцінки

# Групування оцінок ratings_per_customer = ratings_df.groupBy("customer_id").mean("rating")
# Джойн за customer ID customer_df.join( ratings_per_customer, customer_df.customer_id==ratings_per_customer.customer_id )
Вступ до Data Engineering

Давайте потренуємось!

Вступ до Data Engineering

Preparing Video For Download...