Estatísticas resumidas por grupo
Neste exercício, vamos combinar os métodos .groupBy() e .filter() que você já usou para calcular o número min() e avg() de usuários que avaliaram cada música, e o número min() e avg() de músicas que cada usuário avaliou.
Como nossos dados agora incluem 0 para itens ainda não consumidos, vamos precisar .filter() esses valores ao fazer estatísticas resumidas por grupo como esta. O conjunto de dados msd é fornecido para você aqui. As funções col(), min() e avg() de pyspark.sql.functions já foram importadas para você.
Este exercicio faz parte do curso
Construindo mecanismos de recomendação com PySpark
Instruções do exercicio
- Como exemplo, os métodos
.filter(),.groupBy()e.count()são aplicados ao conjunto de dadosmsdjunto com.select()emin()para retornar o menor número de avaliações que qualquer música do conjunto de dados recebeu. Use isso como modelo para calcular o númeroavg()de avaliações implícitas que as músicas emmsdreceberam. - Usando o mesmo modelo, encontre o número
min()eavg()de avaliações implícitas que osuserIds forneceram no conjunto de dadosmsd.
exercicio interativo prático
Tente este exercicio completando este código de exemplo.
# 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).____("____").____().____(____("____")).____()