开始使用免费开始使用

分组汇总统计

在本练习中,您将把之前用过的 .groupBy().filter() 结合起来,分别计算每首歌被评分的 min()avg() 用户数量,以及每个用户评分过的歌曲数的 min()avg()

由于我们的数据现在对尚未消费的项目使用了 0,因此在做这样的分组汇总统计时,需要先用 .filter() 将它们过滤掉。这里已经为您提供了 msd 数据集。pyspark.sql.functions 中的 col()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).____("____").____().____(____("____")).____()
编辑并运行代码