การแก้ไขคอลัมน์ใน DataFrame
ก่อนหน้านี้ได้กรองแถวที่ไม่มีรูปแบบคล้ายชื่อคนออกไปแล้ว ต่อมาผู้จัดการขอให้สร้างคอลัมน์ใหม่ 2 คอลัมน์ ได้แก่ first_name และ last_name โดยให้แยกคอลัมน์ VOTER_NAME ด้วยอักขระช่องว่าง แล้วกำหนดให้คำสุดท้ายเป็น last_name ส่วนคำที่เหลือทั้งหมดเป็น first_name
ในแบบฝึกหัดนี้จะได้ใช้ฟังก์ชันใหม่ ได้แก่ .split(), .size(), และ .getItem() โดย .getItem(index) รับค่าจำนวนเต็มเพื่อดึงรายการในคอลัมน์ตาม index ที่ระบุ ส่วนฟังก์ชัน .split() และ .size() อยู่ในไลบรารี pyspark.sql.functions
โปรดทราบว่าการดำเนินการเหล่านี้มักขึ้นอยู่กับบริบทการใช้งานเป็นหลัก การทำให้ข้อมูลอยู่ในรูปแบบที่กำหนดไว้มักสำคัญกว่ารายละเอียดปลีกย่อยของรูปแบบนั้น งานทำความสะอาดข้อมูลแทบไม่เคยมีไว้สำหรับคนเดียว การกำหนดรูปแบบที่ชัดเจนช่วยให้แชร์ข้อมูลต่อได้ง่ายขึ้นในภายหลัง (เช่น Paul ไม่ต้องกังวลเรื่องชื่อ เพราะ Mary ทำความสะอาดชุดข้อมูลไว้แล้ว)
สามารถใช้ voter DataFrame ที่กรองแล้วจากแบบฝึกหัดก่อนหน้าผ่านตัวแปร voter_df และไลบรารี pyspark.sql.functions ถูก import ไว้ในนามแฝง F
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การทำความสะอาดข้อมูลด้วย PySpark
คำแนะนำการฝึกหัด
- เพิ่มคอลัมน์ใหม่ชื่อ
splitsสำหรับเก็บรายการชื่อที่แยกได้ - ใช้เมธอด
getItem()เพื่อสร้างคอลัมน์ใหม่ชื่อfirst_name - ดึงรายการสุดท้ายจาก list
splitsแล้วสร้างคอลัมน์ชื่อlast_name - ลบคอลัมน์
splitsออก จากนั้นแสดงผลvoter_dfที่อัปเดตแล้ว
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Add a new column called splits separated on whitespace
voter_df = voter_df.withColumn(____, F.____(voter_df.VOTER_NAME, '\s+'))
# Create a new column called first_name based on the first item in splits
voter_df = voter_df.withColumn(____, voter_df.splits.getItem(____)
# Get the last entry of the splits list and create a column called last_name
voter_df = voter_df.withColumn(____, voter_df.splits.getItem(F.____('splits') - ____))
# Drop the splits column
voter_df = voter_df.____('splits')
# Show the voter_df DataFrame
voter_df.show()