Usuwanie danych

Inżynieria cech z PySpark

John Hogue

Lead Data Scientist, General Mills

Gdzie mogą pojawić się błędy w danych?

  • Błędny zapis
  • Unikalne zdarzenia
  • Nieprawidłowy format
  • Duplikaty
  • Brakujące wartości
  • Nieistotne dane

Domino

Inżynieria cech z PySpark

Usuwanie kolumn

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

Wiele pól nie jest potrzebnych w analizie

  • 'NO' – automatycznie generowany numer rekordu
  • 'UNITNUMBER' – nieistotne dane
  • 'CLASS' – wartość stała dla wszystkich rekordów
Inżynieria cech z PySpark

Usuwanie kolumn

drop(*cols)

  • *cols – nazwa kolumny lub lista nazw kolumn do usunięcia.
  • Zwraca nowy DataFrame bez wskazanych kolumn
# List of columns to drop
cols_to_drop = ['NO', 'UNITNUMBER', 'CLASS']

# Drop the columns df = df.drop(*cols_to_drop)
Inżynieria cech z PySpark

Filtrowanie tekstu

  • where(condition)
    • condition – kolumna typu types.BooleanType lub wyrażenie SQL.
    • Filtruje DataFrame, zachowując wiersze spełniające warunek
  • like(other)
    • other – wzorzec SQL LIKE
    • Zwraca kolumnę wartości logicznych
  • ~
    • Warunek NOT
df = df.where(~df['POTENTIALSHORTSALE'].like('Not Disclosed'))
Inżynieria cech z PySpark

Filtrowanie wartości odstających

Filtrowanie danych do trzech odchyleń standardowych (3σ) od średniej (μ)

Standardowy rozkład normalny

Inżynieria cech z PySpark

Przykład filtrowania wartości

# 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))
Inżynieria cech z PySpark

Usuwanie NA i NULL

DataFrame.dropna()

  • how: 'any' lub 'all'. Przy 'any' rekord jest usuwany, jeśli zawiera jakikolwiek null. Przy 'all' – tylko gdy wszystkie wartości są null.
  • thresh: int, domyślnie None. Jeśli podano, usuwa rekordy z liczbą wartości niepustych mniejszą niż thresh. Nadpisuje parametr how.
  • subset: opcjonalna lista nazw kolumn do uwzględnienia.
Inżynieria cech z PySpark

Usuwanie NA i 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)
Inżynieria cech z PySpark

Usuwanie duplikatów

Czym jest duplikat?

  • Dwa lub więcej rekordów zawiera identyczne informacje
  • Po usunięciu kolumn lub łączeniu zbiorów danych należy sprawdzić duplikaty

dropDuplicates()

  • Działa na całym DataFrame lub wybranej liście kolumn
  • W PySpark kolejność usuwania rekordów nie jest określona
# Entire DataFrame
df.dropDuplicates()

# Check only a column list df.dropDuplicates(['streetaddress'])
Inżynieria cech z PySpark

Czas na ćwiczenia!

Inżynieria cech z PySpark

Preparing Video For Download...