Pivot & Join
การ explode และ pivot ฟิลด์ที่ซับซ้อนนั้นมีประโยชน์มาก แต่ผลลัพธ์ที่ได้จะเป็น dataframe ที่มีเฉพาะค่าที่ถูก pivot เท่านั้น หากต้องการให้ข้อมูลมีคุณค่าอย่างแท้จริง จำเป็นต้องนำกลับไปรวมกับชุดข้อมูลเดิม! หลังจาก join ชุดข้อมูลแล้ว คอลัมน์ที่สร้างขึ้นใหม่จะมีค่า NULL จำนวนมาก แต่เนื่องจากเราทราบบริบทของการสร้างคอลัมน์เหล่านี้ จึงสามารถเติมค่าศูนย์ได้อย่างปลอดภัย เพราะข้อมูลแต่ละรายการจะมีหรือไม่มีแอตทริบิวต์นั้นเพียงอย่างเดียว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Feature Engineering with PySpark
คำแนะนำการฝึกหัด
- Pivot ค่าของ
ex_garage_listโดยจัดกลุ่มตาม id ของระเบียนNOด้วยgroupBy()แล้วใช้โค้ดที่เตรียมไว้เพื่อรวมค่าconstant_valโดยละเว้นค่า null และนำค่าแรกมาใช้ - Left join
piv_dfกับdfโดยใช้NOเป็นเงื่อนไขการ join - สร้างรายการคอลัมน์
zfill_colsสำหรับเติมค่าศูนย์ โดยใช้แอตทริบิวต์columnsบนpiv_df - เติมค่าศูนย์ให้กับคอลัมน์ที่ถูก pivot ใน
zfill_colsโดยใช้fillna()พร้อมระบุsubset
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
from pyspark.sql.functions import coalesce, first
# Pivot
piv_df = ex_df.____(____).____(____).agg(coalesce(first(____)))
# Join the dataframes together and fill null
joined_df = ____.join(____, on='NO', how=____)
# Columns to zero fill
zfill_cols = ____.____
# Zero fill the pivoted values
zfilled_df = joined_df.____(0, subset=____)