Операції з колонками DataFrame

Очищення даних у PySpark

Mike Metzger

Data Engineering Consultant

Пам'ятка про DataFrame

DataFrame:

  • Складається з рядків і колонок
  • Незмінний (immutable)
  • Дані змінюють за допомогою трансформацій
# Повернути рядки, де name починається з "M" 
voter_df.filter(voter_df.name.like('M%'))

# Повернути лише name та position voters = voter_df.select('name', 'position')
Очищення даних у PySpark

Поширені трансформації DataFrame

  • Filter / Where
    voter_df.filter(voter_df.date > '1/1/2019') # або voter_df.where(...)
    
  • Select
    voter_df.select(voter_df.name)
    
  • withColumn
    voter_df.withColumn('year', voter_df.date.year)
    
  • drop
    voter_df.drop('unused_column')
    
Очищення даних у PySpark

Фільтрування даних

  • Видаляти null-значення
  • Прибирати некоректні записи
  • Розділяти дані зі змішаних джерел
  • Негувати через ~
    voter_df.filter(voter_df['name'].isNotNull())
    voter_df.filter(voter_df.date.year > 1800)
    voter_df.where(voter_df['_c0'].contains('VOTE'))
    voter_df.where(~ voter_df._c1.isNull())
    
Очищення даних у PySpark

Трансформації рядків у колонках

  • Містяться в pyspark.sql.functions
    import pyspark.sql.functions as F
    
  • Застосовуються до колонки як трансформації
    voter_df.withColumn('upper', F.upper('name'))
    
  • Можуть створювати проміжні колонки
    voter_df.withColumn('splits', F.split('name', ' '))
    
  • Можуть приводити типи
    voter_df.withColumn('year', voter_df['_c4'].cast(IntegerType()))
    
Очищення даних у PySpark

Функції для колонки ArrayType()

Різні утиліти й трансформації для роботи з ArrayType()

.size(<column>) — повертає довжину колонки типу arrayType()

.getItem(<index>) — дістає елемент за індексом у списковій колонці.

Очищення даних у PySpark

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

Очищення даних у PySpark

Preparing Video For Download...