Grupowe statystyki opisowe
W tym ćwiczeniu połączysz metody .groupBy() i .filter(), których wcześniej używasz, aby obliczyć min() i avg() liczby użytkowników, którzy ocenili każdą piosenkę, oraz min() i avg() liczby piosenek ocenionych przez każdego użytkownika.
Ponieważ nasze dane zawierają teraz wartości 0 dla elementów, które nie zostały jeszcze skonsumowane, trzeba je odfiltrować metodą .filter() przed wykonaniem grupowych statystyk opisowych. Zbiór danych msd jest już dla ciebie dostępny. Funkcje col(), min() i avg() z pyspark.sql.functions zostały zaimportowane.
To ćwiczenie jest częścią kursu
Budowanie silników rekomendacji w PySpark
Instrukcje do ćwiczenia
- Jako przykład: metody
.filter(),.groupBy()i.count()są zastosowane do zbioru danychmsdwraz z.select()imin(), aby zwrócić najmniejszą liczbę ocen, jaką otrzymała jakakolwiek piosenka w zbiorze danych. Użyj tego jako wzorca i obliczavg()liczbę niejawnych ocen piosenek w zbiorzemsd. - Korzystając z tego samego wzorca, wyznacz
min()iavg()liczbę niejawnych ocen wystawionych przezuserIdw zbiorze danychmsd.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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).____("____").____().____(____("____")).____()