Feature Engineering avec PySpark
John Hogue
Lead Data Scientist, General Mills

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 drop(*cols)
*cols : un nom de colonne à supprimer ou une liste de noms.# Liste des colonnes à supprimer cols_to_drop = ['NO', 'UNITNUMBER', 'CLASS']# Supprimer les colonnes df = df.drop(*cols_to_drop)
where(condition)types.BooleanType ou une chaîne d'expression SQL.like(other)~df = df.where(~df['POTENTIALSHORTSALE'].like('Not Disclosed'))
Filtrer les données à ± trois écarts types (3σ) autour de la moyenne (μ)

# 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 sup. et inf. à trois écarts types (μ ± 3σ) 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))
DataFrame.dropna()
how : « any » ou « all ». Avec « any », supprime l'enregistrement s'il contient au moins une valeur nulle. Avec « all », uniquement si toutes les valeurs sont nulles.thresh : int, par défaut None. Si défini, supprime les enregistrements ayant moins de thresh valeurs non nulles. Écrase le paramètre how.subset : liste optionnelle de colonnes à considérer.# Supprimer tout enregistrement avec des valeurs NULL df = df.dropna()# Supprimer si LISTPRICE et SALESCLOSEPRICE sont NULL df = df.dropna(how='all', subset['LISTPRICE', 'SALESCLOSEPRICE '])# Supprimer les enregistrements où au moins deux colonnes sont NULL df = df.dropna(thresh=2)
Qu'est-ce qu'un doublon ?
dropDuplicates()
# Tout le DataFrame df.dropDuplicates()# Ne vérifier qu'une liste de colonnes df.dropDuplicates(['streetaddress'])
Feature Engineering avec PySpark