Veri Silme

PySpark ile Özellik Mühendisliği

John Hogue

Lead Data Scientist, General Mills

Veri nerede bozulur?

  • Yanlış kaydedilmiş
  • Benzersiz olaylar
  • Hatalı biçimlendirme
  • Yinelenenler
  • Eksik
  • İlgisiz

Dominolar

PySpark ile Özellik Mühendisliği

Sütun Silme

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

Analizimiz için birden çok alan gereksiz

  • 'NO' otomatik oluşturulan kayıt numarası
  • 'UNITNUMBER' alakasız veri
  • 'CLASS' tamamen sabit
PySpark ile Özellik Mühendisliği

Sütun Silme

drop(*cols)

  • *cols – silinecek sütun adı veya sütun adları listesi.
  • Belirtilenleri silen yeni bir DataFrame döndürür
# Silinecek sütunların listesi
cols_to_drop = ['NO', 'UNITNUMBER', 'CLASS']

# Sütunları sil df = df.drop(*cols_to_drop)
PySpark ile Özellik Mühendisliği

Metin Filtreleme

  • where(condition)
    • condition – types.BooleanType bir Column veya bir SQL ifade dizesi.
    • Koşulun true olduğu yerleri filtreler
  • like(other)
    • other – bir SQL LIKE deseni
    • Boolean bir Column döndürür
  • ~
    • NOT koşulu
df = df.where(~df['POTENTIALSHORTSALE'].like('Not Disclosed'))
PySpark ile Özellik Mühendisliği

Aykırı Değer Filtreleme

Veriyi ortalamanın (μ) üç standart sapması (3σ) içinde filtrele

Standart Normal Dağılım

PySpark ile Özellik Mühendisliği

Değer Filtreleme Örneği

# Filtrelemede kullanılacak değerleri hesapla
std_val = df.agg({'SALESCLOSEPRICE': 'stddev'}).collect()[0][0]
mean_val = df.agg({'SALESCLOSEPRICE': 'mean'}).collect()[0][0]

# Veri için üç standart sapma (μ ± 3σ) alt ve üst sınırları oluştur hi_bound = mean_val + (3 * std_val) low_bound = mean_val - (3 * std_val)
# DataFrame'i değerler arasında where() ile filtrele df = df.where((df['LISTPRICE'] < hi_bound) & (df['LISTPRICE'] > low_bound))
PySpark ile Özellik Mühendisliği

NA veya NULL Silme

DataFrame.dropna()

  • how: 'any' veya 'all'. 'any' ise, herhangi bir null içeriyorsa kaydı sil. 'all' ise, tüm değerleri null ise kaydı sil.
  • thresh: int, varsayılan None. Belirtilirse, thresh'ten az null-olmayan değeri olan kayıtları siler. Bu, how parametresini geçersiz kılar.
  • subset: dikkate alınacak sütun adlarının isteğe bağlı listesi.
PySpark ile Özellik Mühendisliği

NA veya NULL Silme

# NULL içeren tüm kayıtları sil
df = df.dropna()

# LISTPRICE ve SALESCLOSEPRICE her ikisi de NULL ise kayıtları sil df = df.dropna(how='all', subset['LISTPRICE', 'SALESCLOSEPRICE '])
# En az iki sütunu NULL olan kayıtları sil df = df.dropna(thresh=2)
PySpark ile Özellik Mühendisliği

Yinelenenleri Silme

Yinelenen nedir?

  • İki veya daha fazla kaydın tüm bilgileri aynıysa
  • Sütun sildikten veya veri kümelerini birleştirdikten sonra yinelenenleri kontrol et

dropDuplicates()

  • Tüm DataFrame'de veya bir sütun listesinde çalıştırılabilir
  • PySpark'ta hangi kaydın silindiğine dair bir sıra yoktur
# Tüm DataFrame
df.dropDuplicates()

# Yalnızca bir sütun listesini kontrol et df.dropDuplicates(['streetaddress'])
PySpark ile Özellik Mühendisliği

Hadi pratik yapalım!

PySpark ile Özellik Mühendisliği

Preparing Video For Download...