Зведена статистика за групами
У цій вправі ми поєднаємо методи .groupBy() і .filter(), які ви вже використовували, щоб обчислити min() і avg() для кількості користувачів, які оцінили кожну пісню, а також min() і avg() для кількості пісень, які оцінив кожен користувач.
Оскільки тепер у наших даних є 0 для елементів, які ще не спожито, нам потрібно відфільтрувати їх за допомогою .filter() під час обчислення таких зведених статистик за групами. Набір даних msd надано вам. Функції col(), min() і avg() з pyspark.sql.functions уже імпортовано для вас.
Ця вправа є частиною курсу
Створення рушіїв рекомендацій у PySpark
Інструкції до вправи
- Як приклад, до набору даних
msdзастосовано методи.filter(),.groupBy()і.count()разом із.select()іmin(), щоб повернути найменшу кількість оцінок, яку отримала будь-яка пісня в цьому наборі. Використайте це як зразок, щоб обчислитиavg()кількість неявних оцінок, які пісні вmsdотримали. - За тим самим зразком знайдіть
min()іavg()для кількості неявних оцінок, які надалиuserIdу наборі данихmsd.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# 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).____("____").____().____(____("____")).____()