สถิติสรุปของ MovieLens
มาใช้เมธอด groupBy() ให้ลึกขึ้นอีกขั้น
เมื่อใช้เมธอด .groupBy() กับ dataframe แล้ว สามารถเรียกใช้ฟังก์ชันรวม (aggregate functions) เช่น .sum(), .avg(), .min() เพื่อดูผลลัพธ์แบบจัดกลุ่มได้ แบบฝึกหัดนี้จะพาไปทำความเข้าใจวิธีการดังกล่าว โดยได้นำเข้าฟังก์ชัน min และ avg จาก pyspark.sql.functions ไว้ให้แล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การสร้าง Recommendation Engines ด้วย PySpark
คำแนะนำการฝึกหัด
- จัดกลุ่มข้อมูลตาม
movieIdแล้วใช้เมธอด.count()เพื่อนับจำนวนการให้คะแนนที่แต่ละภาพยนตร์ได้รับ จากนั้นเรียกเมธอด.select()เพื่อเลือกค่าต่อไปนี้:min("count")เพื่อดูจำนวนการให้คะแนนต่ำสุดของภาพยนตร์ในชุดข้อมูล โดยข้อแรกนี้เตรียมไว้ให้เป็นตัวอย่างแล้วavg("count")เพื่อดูจำนวนการให้คะแนนเฉลี่ยต่อภาพยนตร์
- ทำแบบเดียวกัน แต่คราวนี้จัดกลุ่มตาม
userIdเพื่อดูค่าminและavgของจำนวนการให้คะแนน
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Min num ratings for movies
print("Movie with the fewest ratings: ")
ratings.groupBy("movieId").count().select(min("count")).show()
# Avg num ratings per movie
print("Avg num ratings per movie: ")
____.groupBy("____").count().____(avg("____")).____()
# Min num ratings for user
print("User with the fewest ratings: ")
ratings.____("userId").____().select(____("____")).____()
# Avg num ratings per users
print("Avg num ratings per user: ")
____.____("____").____().____(____("____")).____()