開始使用免費開始

群組化摘要統計

在這個練習中,你會把先前使用過的 .groupBy().filter() 方法結合起來,計算每首歌被評分的使用者數量的 min()avg(),以及每位使用者評分的歌曲數量的 min()avg()

因為我們的資料現在包含尚未消費項目的 0,所以在做這類群組化摘要統計時需要用 .filter() 把它們排除。這裡已提供 msd 資料集。來自 pyspark.sql.functionscol()min()avg() 函式也已為你匯入。

本練習屬於課程

使用 PySpark 打造推薦引擎

檢視課程

練習說明

  • 範例中,對 msd 資料集先後套用 .filter().groupBy().count() 方法,再搭配 .select()min(),以回傳資料集中任一首歌所收到評分次數的最小值。請以此為範本,計算 msd 中歌曲所收到隱含評分次數的 avg()
  • 以相同做法,找出在 msd 資料集中,各 userId 所提供隱含評分次數的 min()avg()

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

# 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).____("____").____().____(____("____")).____()
編輯並執行程式碼