เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

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=____)
แก้ไขและรันโค้ด