Ingénierie des caractéristiques 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 de colonnes.# 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 à l'intérieur de 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 (μ ± 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))
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.# 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)
Qu'est-ce qu'un doublon ?
dropDuplicates()
# Tout le DataFrame df.dropDuplicates()# Vérifier seulement une liste de colonnes df.dropDuplicates(['streetaddress'])
Ingénierie des caractéristiques avec PySpark