Odstraňování dat

Feature Engineering with PySpark

John Hogue

Lead Data Scientist, General Mills

Kde se data kazí?

  • Nesprávně zaznamenáno
  • Jedinečné události
  • Nesprávný formát
  • Duplicity
  • Chybějící hodnoty
  • Nerelevantní data

Domino

Feature Engineering with PySpark

Odstraňování sloupců

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

Několik polí není pro analýzu potřeba

  • 'NO' automaticky generované číslo záznamu
  • 'UNITNUMBER' nerelevantní data
  • 'CLASS' konstantní hodnota
Feature Engineering with PySpark

Odstraňování sloupců

drop(*cols)

  • *cols – název sloupce nebo seznam názvů sloupců k odstranění.
  • Vrátí nový DataFrame bez zadaných sloupců
# List of columns to drop
cols_to_drop = ['NO', 'UNITNUMBER', 'CLASS']

# Drop the columns df = df.drop(*cols_to_drop)
Feature Engineering with PySpark

Textové filtrování

  • where(condition)
    • condition – sloupec typu types.BooleanType nebo řetězec SQL výrazu.
    • Filtruje DataFrame, kde je podmínka pravdivá
  • like(other)
    • other – vzor SQL LIKE
    • Vrátí booleovský sloupec
  • ~
    • Podmínka NOT
df = df.where(~df['POTENTIALSHORTSALE'].like('Not Disclosed'))
Feature Engineering with PySpark

Filtrování odlehlých hodnot

Filtrujte data do rozsahu tří směrodatných odchylek (3σ) od průměru (μ)

Standardní normální rozdělení

Feature Engineering with PySpark

Příklad filtrování hodnot

# Calculate values used for filtering
std_val = df.agg({'SALESCLOSEPRICE': 'stddev'}).collect()[0][0]
mean_val = df.agg({'SALESCLOSEPRICE': 'mean'}).collect()[0][0]

# Create three standard deviation (μ ± 3σ) upper and lower bounds for data hi_bound = mean_val + (3 * std_val) low_bound = mean_val - (3 * std_val)
# Use where() to filter the DataFrame between values df = df.where((df['LISTPRICE'] < hi_bound) & (df['LISTPRICE'] > low_bound))
Feature Engineering with PySpark

Odstraňování hodnot NA nebo NULL

DataFrame.dropna()

  • how: 'any' nebo 'all'. Při 'any' se záznam odstraní, pokud obsahuje jakoukoliv hodnotu null. Při 'all' pouze tehdy, jsou-li všechny hodnoty null.
  • thresh: int, výchozí None. Je-li zadáno, odstraní záznamy s méně než thresh nenulovými hodnotami. Přepisuje parametr how.
  • subset: volitelný seznam názvů sloupců.
Feature Engineering with PySpark

Odstraňování hodnot NA nebo NULL

# Drop any records with NULL values
df = df.dropna()

# drop records if both LISTPRICE and SALESCLOSEPRICE are NULL df = df.dropna(how='all', subset['LISTPRICE', 'SALESCLOSEPRICE '])
# Drop records where at least two columns have NULL values df = df.dropna(thresh=2)
Feature Engineering with PySpark

Odstraňování duplicit

Co je duplicita?

  • Dva nebo více záznamů obsahují stejné informace
  • Po odebrání sloupců nebo spojení datových sad zkontrolujte duplicity

dropDuplicates()

  • Lze spustit nad celým DataFramem nebo seznamem sloupců
  • V PySparku není určeno pořadí odstraňování záznamů
# Entire DataFrame
df.dropDuplicates()

# Check only a column list df.dropDuplicates(['streetaddress'])
Feature Engineering with PySpark

Pojďme si procvičit!

Feature Engineering with PySpark

Preparing Video For Download...