Thống kê tóm tắt theo nhóm
Trong bài tập này, bạn sẽ kết hợp các phương thức .groupBy() và .filter() mà bạn đã dùng trước đó để tính số min() và avg() người dùng đã đánh giá mỗi bài hát, và số min() và avg() bài hát mà mỗi người dùng đã đánh giá.
Vì dữ liệu hiện có thêm các giá trị 0 cho những mục chưa được tiêu thụ, bạn cần .filter() chúng ra khi tính các thống kê tóm tắt theo nhóm như thế này. Dataset msd đã được cung cấp. Các hàm col(), min(), và avg() từ pyspark.sql.functions đã được import sẵn cho bạn.
Bài tập này là một phần của khóa học
Xây dựng Recommendation Engine với PySpark
Hướng dẫn bài tập
- Ví dụ, các phương thức
.filter(),.groupBy()và.count()được áp dụng lên datasetmsdcùng với.select()vàmin()để trả về số lượng đánh giá nhỏ nhất mà bất kỳ bài hát nào trong dataset nhận được. Hãy dùng mẫu này để tínhavg()số lượng implicit ratings mà các bài hát trongmsdnhận được. - Dựa trên cùng mẫu đó, hãy tìm
min()vàavg()số lượng implicit ratings mà cácuserIdđã tạo trong datasetmsd.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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).____("____").____().____(____("____")).____()