Statistiques sommaires groupées
Dans cet exercice, nous allons combiner les méthodes .groupBy() et .filter() que vous avez déjà utilisées pour calculer le nombre min() et avg() d'utilisateurs ayant évalué chaque chanson, ainsi que le nombre min() et avg() de chansons que chaque utilisateur a évaluées.
Comme nos données incluent maintenant des 0 pour les éléments encore non consommés, nous devons les exclure avec .filter() lorsque nous calculons des statistiques sommaires par groupe. Le jeu de données msd est fourni. Les fonctions col(), min() et avg() de pyspark.sql.functions ont été importées pour vous.
Cette activité fait partie du cours
Créer des moteurs de recommandation avec PySpark
Instructions de l’exercice
- À titre d'exemple, les méthodes
.filter(),.groupBy()et.count()sont appliquées au jeu de donnéesmsdavec.select()etmin()pour retourner le plus petit nombre d'évaluations reçues par une chanson du jeu de données. Servez-vous-en comme modèle pour calculer le nombreavg()d'évaluations implicites reçues par les chansons dansmsd. - En suivant le même modèle, trouvez les nombres
min()etavg()d'évaluations implicites que lesuserIdont fournies dans le jeu de donnéesmsd.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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).____("____").____().____(____("____")).____()