Opérations sur les colonnes d'un DataFrame

Nettoyer des données avec PySpark

Mike Metzger

Data Engineering Consultant

Rappel sur les DataFrames

DataFrames :

  • Composés de lignes et de colonnes
  • Immuables
  • Utilisent diverses transformations pour modifier les données
# Retourner les lignes où name commence par "M"
voter_df.filter(voter_df.name.like('M%'))

# Retourner seulement name et position voters = voter_df.select('name', 'position')
Nettoyer des données avec PySpark

Transformations courantes de 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')
    
Nettoyer des données avec PySpark

Filtrer les données

  • Retirer les valeurs nulles
  • Retirer les entrées aberrantes
  • Scinder des données issues de sources combinées
  • Nier avec ~
    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())
    
Nettoyer des données avec PySpark

Transformations de chaînes sur les colonnes

  • Inclus dans pyspark.sql.functions
    import pyspark.sql.functions as F
    
  • Appliquées par colonne comme transformation
    voter_df.withColumn('upper', F.upper('name'))
    
  • Peuvent créer des colonnes intermédiaires
    voter_df.withColumn('splits', F.split('name', ' '))
    
  • Peuvent convertir le type
    voter_df.withColumn('year', voter_df['_c4'].cast(IntegerType()))
    
Nettoyer des données avec PySpark

Fonctions pour colonnes ArrayType()

Diverses fonctions utilitaires / transformations pour interagir avec ArrayType()

.size(<column>) – retourne la longueur d'une colonne de type ArrayType()

.getItem(<index>) – permet d'extraire un élément précis à l'indice d'une colonne liste.

Nettoyer des données avec PySpark

Passons à la pratique !

Nettoyer des données avec PySpark

Preparing Video For Download...