Опрацювання ознак у 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|
Кілька полів не потрібні для нашого аналізу
'NO' — автоматично згенерований номер запису'UNITNUMBER' — нерелевантні дані'CLASS' — значення сталe для всіх drop(*cols)
*cols — назва стовпця або список назв для видалення.# Список стовпців для видалення cols_to_drop = ['NO', 'UNITNUMBER', 'CLASS']# Видаліть стовпці df = df.drop(*cols_to_drop)
where(condition)types.BooleanType або SQL-вираз рядком.like(other)~df = df.where(~df['POTENTIALSHORTSALE'].like('Not Disclosed'))
Відфільтруйте дані в межах трьох стандартних відхилень (3σ) від середнього (μ)

# Обчисліть значення для фільтрації std_val = df.agg({'SALESCLOSEPRICE': 'stddev'}).collect()[0][0] mean_val = df.agg({'SALESCLOSEPRICE': 'mean'}).collect()[0][0]# Створіть верхню та нижню межі (μ ± 3σ) hi_bound = mean_val + (3 * std_val) low_bound = mean_val - (3 * std_val)# Використайте where() для фільтрації між межами df = df.where((df['LISTPRICE'] < hi_bound) & (df['LISTPRICE'] > low_bound))
DataFrame.dropna()
how: 'any' або 'all'. Якщо 'any', видаліть запис, якщо є будь-які null. Якщо 'all', видаліть запис лише коли всі значення null.thresh: int, типово None. Якщо вказано, видаліть записи з менш ніж thresh ненульовими значеннями. Перекриває параметр how.subset: необов'язковий список назв стовпців для перевірки.# Видаліть записи з NULL-значеннями df = df.dropna()# Видаліть записи, якщо і LISTPRICE, і SALESCLOSEPRICE — NULL df = df.dropna(how='all', subset['LISTPRICE', 'SALESCLOSEPRICE '])# Видаліть записи, де щонайменше два стовпці мають NULL df = df.dropna(thresh=2)
Що таке дублікат?
dropDuplicates()
# Увесь DataFrame df.dropDuplicates()# Перевірити лише список стовпців df.dropDuplicates(['streetaddress'])
Опрацювання ознак у PySpark