การลบแถวที่เป็นคอมเมนต์
หัวหน้าต้องการให้คุณทำการ parse ข้อมูลชุดใหม่ที่ซับซ้อน ข้อมูลนี้คือข้อมูล annotation สำหรับชุดข้อมูล ImageNet โดยเน้นที่การระบุสายพันธุ์สุนัขในภาพ ก่อนที่จะวิเคราะห์ได้จริง คุณจะต้องกำจัดส่วนที่เป็นข้อมูลไม่ถูกต้องออกก่อน เนื่องจากยังไม่ทราบ schema ทั่วไปของไฟล์ คุณจึงต้องการนำเข้าแถวทั้งหมดไปยังคอลัมน์เดียว เพื่อให้วิเคราะห์ได้สะดวก
ขั้นแรก ต้องลบแถวที่เป็นคอมเมนต์ทั้งหมดออกจากชุดข้อมูล
spark context และไฟล์ CSV ต้นฉบับ (annotations.csv.gz) พร้อมให้ใช้งานแล้ว รวมถึงฟังก์ชัน col ด้วย
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การทำความสะอาดข้อมูลด้วย PySpark
คำแนะนำการฝึกหัด
- นำเข้าไฟล์
annotations.csv.gzไปยัง DataFrame แล้วนับจำนวนแถว โดยระบุอักขระคั่นเป็น | - ค้นหาจำนวนแถวที่ขึ้นต้นด้วย #
- นำเข้าไฟล์อีกครั้งไปยัง DataFrame ใหม่ แต่คราวนี้ระบุอักขระคอมเมนต์ใน options เพื่อลบแถวคอมเมนต์ออก
- นับจำนวนแถวใน DataFrame ใหม่ และตรวจสอบว่าผลต่างที่ได้เป็นไปตามที่คาดไว้
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Import the file to a DataFrame and perform a row count
annotations_df = spark.read.____('____', sep=____)
full_count = annotations_df.____
# Count the number of rows beginning with '#'
comment_count = annotations_df.____(col('_c0').____('#')).count()
# Import the file to a new DataFrame, without commented rows
no_comments_df = ____.____.____('____', ____=____, comment='____')
# Count the new DataFrame and verify the difference is as expected
no_comments_count = no_comments_df.count()
print("Full count: %d\nComment count: %d\nRemaining count: %d" % (____, ____, ____))