Statistici sumare grupate
În acest exercițiu, vom combina metodele .groupBy() și .filter() pe care le-ai folosit anterior, pentru a calcula numărul min() și avg() de utilizatori care au evaluat fiecare melodie, respectiv numărul min() și avg() de melodii evaluate de fiecare utilizator.
Deoarece datele noastre conțin acum valori 0 pentru elementele care nu au fost consumate încă, va trebui să le eliminăm cu .filter() atunci când calculăm statistici sumare grupate de acest tip. Setul de date msd îți este furnizat. Funcțiile col(), min() și avg() din pyspark.sql.functions au fost deja importate.
Acest exercițiu face parte din cursul
Construiește motoare de recomandare cu PySpark
Instrucțiuni pentru exercițiu
- Ca exemplu, metodele
.filter(),.groupBy()și.count()sunt aplicate setului de datemsd, împreună cu.select()șimin(), pentru a returna cel mai mic număr de evaluări primit de orice melodie din set. Folosește acest model pentru a calcula numărulavg()de evaluări implicite primite de melodiile dinmsd. - Folosind același model, determină numărul
min()șiavg()de evaluări implicite oferite deuserId-urile din setul de datemsd.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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).____("____").____().____(____("____")).____()