日期運算
在這個範例中,你要檢查資料的頻率。Mortgage 資料集理論上是每週一次的資料,但我們來確認一下:先對報告日期做落後值,接著計算兩個日期之間的差。
回想一下,若要建立落後期的特徵,需要先建立一個 window()。window() 可以讓你根據一組紀錄進行計算,並為每筆紀錄回傳一個值;在這裡,就是前一期的房貸利率。
本練習屬於課程
使用 PySpark 進行特徵工程
練習說明
- 使用
to_date()將mort_df['DATE']轉成日期型別。 - 以
Window()建立一個視窗,並用orderBy()依mort_df[DATE]排序。 - 使用
withColumn()和lag()對DATE欄位取落後值,建立新欄位DATE-1,並搭配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()