Bắt đầu ngayBắt đầu miễn phí

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().filter() mà bạn đã dùng trước đó để tính số min()avg() người dùng đã đánh giá mỗi bài hát, và số min()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

Xem khóa học

Hướng dẫn bài tập

  • Ví dụ, các phương thức .filter(), .groupBy().count() được áp dụng lên dataset msd cùng với .select()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ính avg() số lượng implicit ratings mà các bài hát trong msd nhận được.
  • Dựa trên cùng mẫu đó, hãy tìm min()avg() số lượng implicit ratings mà các userId đã tạo trong dataset msd.

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).____("____").____().____(____("____")).____()
Chỉnh sửa và Chạy Mã