Caratteristiche temporali

Feature Engineering con PySpark

John Hogue

Lead Data Scientist, General Mills

La natura ciclica dei fenomeni

Immagine del tempo

Feature Engineering con PySpark

Scegliere il livello giusto

Vendite giornaliere

Feature Engineering con PySpark

Scegliere il livello giusto

Vendite mensili

Feature Engineering con PySpark

Trattare i campi data come date...

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

Componenti temporali

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

Metriche temporali di base

Immagine: giorni sul mercato

from pyspark.sql.functions import datediff

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

Feature con ritardo (lag)

Goccia di caffè in tazza

window()

Restituisce un record basato su un gruppo di record

lag(col, count=1)

Restituisce il valore spostato di alcune righe prima di quella corrente

Feature Engineering con PySpark

Feature con ritardo in PySpark

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

È il MOMENTO di esercitarsi!

Feature Engineering con PySpark

Preparing Video For Download...