Operazioni sulle colonne dei DataFrame

Pulizia dei dati con PySpark

Mike Metzger

Data Engineering Consultant

Ripasso sui DataFrame

DataFrame:

  • Composto da righe e colonne
  • Immutabile
  • Usa trasformazioni per modificare i dati
# Restituisce le righe in cui name inizia con "M" 
voter_df.filter(voter_df.name.like('M%'))

# Restituisce solo name e position voters = voter_df.select('name', 'position')
Pulizia dei dati con PySpark

Trasformazioni comuni dei DataFrame

  • Filter / Where
    voter_df.filter(voter_df.date > '1/1/2019') # oppure 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')
    
Pulizia dei dati con PySpark

Filtrare i dati

  • Rimuovi null
  • Rimuovi valori anomali
  • Separa dati da fonti combinate
  • Negazione con ~
    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())
    
Pulizia dei dati con PySpark

Trasformazioni stringa di colonna

  • In pyspark.sql.functions
    import pyspark.sql.functions as F
    
  • Applicate per colonna come trasformazione
    voter_df.withColumn('upper', F.upper('name'))
    
  • Possono creare colonne intermedie
    voter_df.withColumn('splits', F.split('name', ' '))
    
  • Possibile cast ad altri tipi
    voter_df.withColumn('year', voter_df['_c4'].cast(IntegerType()))
    
Pulizia dei dati con PySpark

Funzioni per colonne ArrayType()

Funzioni/trasformazioni utili per interagire con ArrayType()

.size(<column>) - restituisce la lunghezza della colonna ArrayType()

.getItem(<index>) - recupera l’elemento all’indice specificato di una colonna lista.

Pulizia dei dati con PySpark

Passiamo alla pratica!

Pulizia dei dati con PySpark

Preparing Video For Download...