CommencerCommencez gratuitement

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>
Voir le cours

Instructions de l’exercice

  • À titre d’exemple, les méthodes .filter(), .groupBy() et .count() sont appliquées au jeu de données msd avec .select() et min() 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 nombre avg() d’évaluations implicites reçues par les chansons de msd.
  • En vous basant sur le même modèle, trouvez le nombre min() et avg() d’évaluations implicites que les userId ont fournies dans le jeu de données msd.

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).____("____").____().____(____("____")).____()
Modifier et exécuter le code