Supprimer des données

Ingénierie des caractéristiques avec PySpark

John Hogue

Lead Data Scientist, General Mills

Où les données peuvent-elles se dégrader ?

  • {{1}} saisi à tort
  • Événements uniques
  • Mauvais format
  • Doublons
  • Valeurs manquantes
  • Non pertinent

Dominos

Ingénierie des caractéristiques avec PySpark

Suppression de colonnes

df.select(['NO', 'UNITNUMBER', 'CLASS']).show()
+----+----------+-----+
|  NO|UNITNUMBER|CLASS|
+----+----------+-----+
|   1|      null|   SF|
| 156|        A8|   SF|
| 157|       207|   SF|
| 158|      701G|   SF|
| 159|        36|   SF|

Plusieurs champs sont inutiles pour notre analyse

  • 'NO' numéro d'enregistrement auto-généré
  • 'UNITNUMBER' donnée non pertinente
  • 'CLASS' valeur constante
Ingénierie des caractéristiques avec PySpark

Suppression de colonnes

drop(*cols)

  • *cols – un nom de colonne à supprimer ou une liste de noms de colonnes.
  • Retourne un nouveau DataFrame sans les colonnes indiquées
# Liste des colonnes à supprimer
cols_to_drop = ['NO', 'UNITNUMBER', 'CLASS']

# Supprimer les colonnes df = df.drop(*cols_to_drop)
Ingénierie des caractéristiques avec PySpark

Filtrage de texte

  • where(condition)
    • condition – une colonne de type types.BooleanType ou une chaîne d'expression SQL.
    • Filtre le DataFrame quand la condition est vraie
  • like(other)
    • other – un motif SQL LIKE
    • Retourne une colonne booléenne
  • ~
    • La négation (NOT)
df = df.where(~df['POTENTIALSHORTSALE'].like('Not Disclosed'))
Ingénierie des caractéristiques avec PySpark

Filtrage des valeurs aberrantes

Filtrer les données à l'intérieur de trois écarts types (3σ) autour de la moyenne (μ)

Distribution normale standard

Ingénierie des caractéristiques avec PySpark

Exemple de filtrage par valeur

# Calculer les valeurs utilisées pour le filtrage
std_val = df.agg({'SALESCLOSEPRICE': 'stddev'}).collect()[0][0]
mean_val = df.agg({'SALESCLOSEPRICE': 'mean'}).collect()[0][0]

# Créer les bornes (μ ± 3σ) supérieure et inférieure hi_bound = mean_val + (3 * std_val) low_bound = mean_val - (3 * std_val)
# Utiliser where() pour filtrer le DataFrame entre ces valeurs df = df.where((df['LISTPRICE'] < hi_bound) & (df['LISTPRICE'] > low_bound))
Ingénierie des caractéristiques avec PySpark

Supprimer les NA ou NULL

DataFrame.dropna()

  • how : « any » ou « all ». Avec « any », supprimer l'enregistrement s'il contient une valeur nulle. Avec « all », le supprimer seulement si toutes ses valeurs sont nulles.
  • thresh : int, par défaut None. Si précisé, supprimer les enregistrements ayant moins de thresh valeurs non nulles. Cela a préséance sur how.
  • subset : liste facultative de colonnes à considérer.
Ingénierie des caractéristiques avec PySpark

Supprimer les NA ou NULL

# Supprimer tout enregistrement avec des valeurs NULL
df = df.dropna()

# Supprimer si LISTPRICE et SALESCLOSEPRICE sont tous deux NULL df = df.dropna(how='all', subset['LISTPRICE', 'SALESCLOSEPRICE '])
# Supprimer les enregistrements où au moins deux colonnes sont NULL df = df.dropna(thresh=2)
Ingénierie des caractéristiques avec PySpark

Supprimer les doublons

Qu'est-ce qu'un doublon ?

  • Deux enregistrements ou plus contiennent exactement les mêmes informations
  • Après avoir supprimé des colonnes ou joint des jeux de données, vérifiez les doublons

dropDuplicates()

  • Peut s'exécuter sur tout le DataFrame ou sur une liste de colonnes
  • En PySpark, l'ordre de suppression n'est pas défini
# Tout le DataFrame
df.dropDuplicates()

# Vérifier seulement une liste de colonnes df.dropDuplicates(['streetaddress'])
Ingénierie des caractéristiques avec PySpark

Passons à la pratique !

Ingénierie des caractéristiques avec PySpark

Preparing Video For Download...