日付の計算
この例では、データの頻度が正しいかを確認します。Mortgage データセットは週次データの想定ですが、実際にそうか、レポート日をラグさせてから日付の差分を取って確かめましょう。
ラグ特徴量を作るには window() を作成する必要があることを思い出してください。window() は、あるレコードのグループに対する計算結果に基づいて各レコードに値を返すためのものです。ここでは、ひとつ前の期間の住宅ローン金利を参照します。
この演習はコースの一部です
PySparkで学ぶ特徴量エンジニアリング
演習の手順
to_date()を使ってmort_df['DATE']を日付型にキャストします。Window()関数でウィンドウを作成し、orderBy()を使ってmort_df[DATE]で並べ替えます。withColumn()で新しい列DATE-1を作成し、lag()でDATE列をラグさせ、over(w)でウィンドウを適用します。datediff()を使ってDATEとDATE-1の差分を計算し、列名をDays_Between_Reportとします。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
from pyspark.sql.functions import lag, datediff, to_date
from pyspark.sql.window import Window
# Cast data type
mort_df = mort_df.withColumn(____, ____(____))
# Create window
w = ____().____(____)
# Create lag column
mort_df = mort_df.____(____, ____(____, count=1).____(w))
# Calculate difference between date columns
mort_df = mort_df.withColumn(____, ____(____, ____))
# Print results
mort_df.select('Days_Between_Report').distinct().show()