Ingeniería de características con 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|
Varios campos no se necesitan para el análisis
'NO': número de registro autogenerado'UNITNUMBER': dato irrelevante'CLASS': todo constante drop(*cols)
*cols: un nombre de columna o una lista de columnas a eliminar.# Lista de columnas a eliminar cols_to_drop = ['NO', 'UNITNUMBER', 'CLASS']# Eliminar las columnas df = df.drop(*cols_to_drop)
where(condition)types.BooleanType o una cadena con expresión SQL.like(other)~df = df.where(~df['POTENTIALSHORTSALE'].like('Not Disclosed'))
Filtra datos a tres desviaciones estándar (3σ) alrededor de la media (μ)

# Calcular valores para filtrar std_val = df.agg({'SALESCLOSEPRICE': 'stddev'}).collect()[0][0] mean_val = df.agg({'SALESCLOSEPRICE': 'mean'}).collect()[0][0]# Crear límites superior e inferior a (μ ± 3σ) hi_bound = mean_val + (3 * std_val) low_bound = mean_val - (3 * std_val)# Usar where() para filtrar el DataFrame entre valores df = df.where((df['LISTPRICE'] < hi_bound) & (df['LISTPRICE'] > low_bound))
DataFrame.dropna()
how: 'any' o 'all'. Con 'any', elimina un registro si tiene algún null; con 'all', solo si todos sus valores son null.thresh: int, por defecto None. Si se indica, elimina registros con menos de thresh valores no nulos. Anula how.subset: lista opcional de columnas a considerar.# Eliminar registros con valores NULL df = df.dropna()# Eliminar si LISTPRICE y SALESCLOSEPRICE son NULL df = df.dropna(how='all', subset['LISTPRICE', 'SALESCLOSEPRICE '])# Eliminar registros donde al menos dos columnas tengan NULL df = df.dropna(thresh=2)
¿Qué es un duplicado?
dropDuplicates()
# Todo el DataFrame df.dropDuplicates()# Comprobar solo una lista de columnas df.dropDuplicates(['streetaddress'])
Ingeniería de características con PySpark