Operações em colunas de DataFrame

Limpeza de dados com o PySpark

Mike Metzger

Data Engineering Consultant

Relembrando DataFrame

DataFrames:

  • Compostos por linhas e colunas
  • Imutáveis
  • Use transformações para modificar os dados
# Retorna linhas em que name começa com "M" 
voter_df.filter(voter_df.name.like('M%'))

# Retorna apenas name e position voters = voter_df.select('name', 'position')
Limpeza de dados com o PySpark

Transformações comuns em DataFrame

  • Filter / Where
    voter_df.filter(voter_df.date > '1/1/2019') # ou 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')
    
Limpeza de dados com o PySpark

Filtrando dados

  • Remover nulos
  • Remover entradas estranhas
  • Separar dados de fontes combinadas
  • Negar com ~
    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())
    
Limpeza de dados com o PySpark

Transformações de strings em colunas

  • Em pyspark.sql.functions
    import pyspark.sql.functions as F
    
  • Aplicadas por coluna como transformação
    voter_df.withColumn('upper', F.upper('name'))
    
  • Podem criar colunas intermediárias
    voter_df.withColumn('splits', F.split('name', ' '))
    
  • Podem fazer cast para outros tipos
    voter_df.withColumn('year', voter_df['_c4'].cast(IntegerType()))
    
Limpeza de dados com o PySpark

Funções para colunas ArrayType()

Várias funções/utilitários para interagir com ArrayType()

.size(<column>) - retorna o tamanho da coluna ArrayType()

.getItem(<index>) - retorna o item no índice da coluna de lista.

Limpeza de dados com o PySpark

Vamos praticar!

Limpeza de dados com o PySpark

Preparing Video For Download...