Feature Engineering mit 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|
Mehrere Felder brauchen wir für die Analyse nicht
'NO' automatisch erzeugte Datensatznummer'UNITNUMBER' irrelevant'CLASS' überall gleich drop(*cols)
*cols – ein zu löschender Spaltenname oder eine Liste davon.# Liste zu löschender Spalten cols_to_drop = ['NO', 'UNITNUMBER', 'CLASS']# Spalten löschen df = df.drop(*cols_to_drop)
where(condition)types.BooleanType oder ein SQL-Ausdruck als String.like(other)~df = df.where(~df['POTENTIALSHORTSALE'].like('Not Disclosed'))
Daten auf drei Standardabweichungen (3σ) um den Mittelwert (μ) begrenzen

# Werte zur Filterung berechnen std_val = df.agg({'SALESCLOSEPRICE': 'stddev'}).collect()[0][0] mean_val = df.agg({'SALESCLOSEPRICE': 'mean'}).collect()[0][0]# Obere und untere Grenze mit drei Standardabweichungen (μ ± 3σ) hi_bound = mean_val + (3 * std_val) low_bound = mean_val - (3 * std_val)# Mit where() das DataFrame zwischen den Grenzwerten filtern df = df.where((df['LISTPRICE'] < hi_bound) & (df['LISTPRICE'] > low_bound))
DataFrame.dropna()
how: „any" oder „all". Bei „any" wird ein Datensatz gelöscht, wenn er irgendeinen Nullwert hat. Bei „all" nur, wenn alle Werte null sind.thresh: int, Standard None. Wenn gesetzt, lösche Datensätze mit weniger als thresh Nicht-Null-Werten. Überschreibt den Parameter how.subset: optionale Liste von Spaltennamen, die berücksichtigt werden.# Alle Datensätze mit NULL-Werten löschen df = df.dropna()# Datensätze löschen, wenn LISTPRICE und SALESCLOSEPRICE beide NULL sind df = df.dropna(how='all', subset['LISTPRICE', 'SALESCLOSEPRICE '])# Datensätze löschen, wenn mindestens zwei Spalten NULL sind df = df.dropna(thresh=2)
Was ist ein Duplikat?
dropDuplicates()
# Gesamtes DataFrame df.dropDuplicates()# Nur eine Spaltenliste prüfen df.dropDuplicates(['streetaddress'])
Feature Engineering mit PySpark