Tidssärdrag

Feature Engineering med PySpark

John Hogue

Lead Data Scientist, General Mills

Tidens cykliska natur

Tidsbild

Feature Engineering med PySpark

Att välja rätt nivå

Daglig försäljning

Feature Engineering med PySpark

Att välja rätt nivå

Månadsförsäljning

Feature Engineering med PySpark

Hantera datumfält som datum...

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 med PySpark

Tidskomponenter

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 med PySpark

Grundläggande tidbaserade mätvärden

Dagar på marknaden

from pyspark.sql.functions import datediff

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

Laggade särdrag

Droppe kaffe i kopp

window()

Returnerar ett värde baserat på en grupp av rader

lag(col, count=1)

Returnerar värdet ett visst antal rader före aktuell rad

Feature Engineering med PySpark

Laggade särdrag på PySpark-vis

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 med PySpark

Nu kör vi en övning!

Feature Engineering med PySpark

Preparing Video For Download...