Tijdkenmerken

Feature Engineering met PySpark

John Hogue

Lead Data Scientist, General Mills

De cyclische aard van dingen

Tijdafbeelding

Feature Engineering met PySpark

Het juiste niveau kiezen

Dagelijkse verkoop

Feature Engineering met PySpark

Het juiste niveau kiezen

Maandelijkse verkoop

Feature Engineering met PySpark

Datumvelden als datum behandelen...

from pyspark.sql.functions import to_date

# Cast the data type to Date
df = df.withColumn('LISTDATE', to_date('LISTDATE'))
# Inspect the field
df[['LISTDATE']].show(2)
+----------+
|  LISTDATE|
+----------+
|2017-07-14|
|2017-10-08|
+----------+
only showing top 2 rows
Feature Engineering met PySpark

Tijdcomponenten

from pyspark.sql.functions import year, month

# Create a new column of year number
df = df.withColumn('LIST_YEAR', year('LISTDATE'))
# Create a new column of month number
df = df.withColumn('LIST_MONTH', month('LISTDATE'))
from pyspark.sql.functions import dayofmonth, weekofyear

# Create new columns of the day number within the month
df = df.withColumn('LIST_DAYOFMONTH', dayofmonth('LISTDATE'))
# Create new columns of the week number within the year
df = df.withColumn('LIST_WEEKOFYEAR', weekofyear('LISTDATE'))
Feature Engineering met PySpark

Basis tijdgebaseerde statistieken

Dagen op de markt-afbeelding

from pyspark.sql.functions import datediff

# Calculate difference between two date fields
df.withColumn('DAYSONMARKET', datediff('OFFMARKETDATE', 'LISTDATE'))
Feature Engineering met PySpark

Lag-kenmerken

Druppel koffie in kopje

window()

Geeft een record terug op basis van een groep records

lag(col, count=1)

Geeft de waarde terug die een aantal rijen vóór de huidige rij staat

Feature Engineering met PySpark

Lag-kenmerken, op de PySpark-manier

from pyspark.sql.functions import lag
from pyspark.sql.window import Window

# Create Window w = Window().orderBy(m_df['DATE'])
# Create lagged column m_df = m_df.withColumn('MORTGAGE-1wk', lag('MORTGAGE', count=1).over(w))
# Inspect results m_df.show(3)
+----------+------------+----------------+
|      DATE|    MORTGAGE|    MORTGAGE-1wk|
+----------+------------+----------------+
|2013-10-10|        4.23|            null|
|2013-10-17|        4.28|            4.23|
|2013-10-24|        4.13|            4.28|
+----------+------------+----------------+
only showing top 3 rows
Feature Engineering met PySpark

Het is TIJD om te oefenen!

Feature Engineering met PySpark

Preparing Video For Download...