Fonctionnalités temporelles

Feature Engineering avec PySpark

John Hogue

Lead Data Scientist, General Mills

La nature cyclique des phénomènes

Image sur le temps

Feature Engineering avec PySpark

Choisir le bon niveau

Ventes quotidiennes

Feature Engineering avec PySpark

Choisir le bon niveau

Ventes mensuelles

Feature Engineering avec PySpark

Traiter les champs date comme des dates…

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

Composantes temporelles

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

Indicateurs temporels de base

Jours sur le marché

from pyspark.sql.functions import datediff

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

Fonctionnalités décalées

Goutte de café dans une tasse

window()

Renvoie un enregistrement basé sur un groupe d'enregistrements

lag(col, count=1)

Renvoie la valeur décalée de n lignes avant la ligne courante

Feature Engineering avec PySpark

Fonctionnalités décalées, façon 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 avec PySpark

Passons à la pratique !

Feature Engineering avec PySpark

Preparing Video For Download...