Statistiques récapitulatives 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 noté chaque chanson, ainsi que le nombre min() et avg() de chansons notées par chaque utilisateur.
Comme nos données incluent désormais des 0 pour les éléments non encore consommés, nous devons les exclure avec .filter() lorsque nous effectuons ce type de statistiques récapitulatives groupées. Le jeu de données msd est fourni. Les fonctions col(), min() et avg() de pyspark.sql.functions ont été importées pour vous.
Cet exercice fait partie du cours
<cours>Créer des moteurs de recommandation avec PySpark</cours>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. Inspirez-vous de ce modèle pour calculer le nombreavg()d’évaluations implicites reçues par les chansons demsd. - En vous basant sur le même modèle, trouvez le nombre
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).____("____").____().____(____("____")).____()