ПочатиПочніть безкоштовно

Зведена статистика за групами

У цій вправі ми поєднаємо методи .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).____("____").____().____(____("____")).____()
Редагувати та запускати код