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

สถิติสรุปแบบจัดกลุ่ม

ในแบบฝึกหัดนี้ เราจะนำเมธอด .groupBy() และ .filter() ที่ได้ใช้ไปก่อนหน้ามารวมกัน เพื่อคำนวณค่า min() และ avg() ของจำนวนผู้ใช้ที่ให้คะแนนแต่ละเพลง รวมถึงจำนวนเพลงที่ผู้ใช้แต่ละคนให้คะแนน

เนื่องจากข้อมูลของเราตอนนี้มีค่า 0 สำหรับรายการที่ยังไม่ได้รับการบริโภค จึงต้องใช้ .filter() เพื่อกรองค่าเหล่านั้นออกก่อนทำสถิติสรุปแบบจัดกลุ่ม ชุดข้อมูล msd ได้เตรียมไว้ให้แล้ว และฟังก์ชัน col(), min(), และ avg() จาก pyspark.sql.functions ได้ถูก import ไว้ให้เรียบร้อย

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การสร้าง Recommendation Engines ด้วย PySpark

ดูคอร์ส

คำแนะนำการฝึกหัด

  • ดูตัวอย่างการใช้เมธอด .filter(), .groupBy() และ .count() กับชุดข้อมูล msd ร่วมกับ .select() และ min() เพื่อหาจำนวนคะแนนน้อยที่สุดที่เพลงใดเพลงหนึ่งในชุดข้อมูลได้รับ จากนั้นใช้แนวทางเดียวกันนี้เพื่อคำนวณค่า avg() ของจำนวน implicit ratings ที่เพลงใน msd ได้รับ
  • โดยใช้แนวทางเดียวกัน ให้หาค่า min() และ avg() ของจำนวน implicit ratings ที่ userId แต่ละคนให้ไว้ในชุดข้อมูล msd

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# Min num implicit ratings for a song
print("Minimum implicit ratings for a song: ")
msd.filter(col("num_plays") > 0).groupBy("songId").count().select(min("count")).show()

# Avg num implicit ratings per songs
print("Average implicit ratings per song: ")
____.filter(____("____") > 0).groupBy("____").count().____(avg("____")).____()

# Min num implicit ratings from a user
print("Minimum implicit ratings from a user: ")
msd.____(____("num_plays") > ____).____("userId").____().select(____("____")).____()

# Avg num implicit ratings for users
print("Average implicit ratings per user: ")
____.filter(col("num_plays") > 0).____("____").____().____(____("____")).____()
แก้ไขและรันโค้ด