ÎncepețiÎncepe gratuit

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

Vezi cursul

Instrucțiuni pentru exercițiu

  • Ca exemplu, metodele .filter(), .groupBy() și .count() sunt aplicate setului de date msd, împreună cu .select() și min(), 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ărul avg() de evaluări implicite primite de melodiile din msd.
  • Folosind același model, determină numărul min() și avg() de evaluări implicite oferite de userId-urile din setul de date msd.

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).____("____").____().____(____("____")).____()
Editează și rulează codul