НачатьНачать бесплатно

Сгруппированная сводная статистика

В этом упражнении мы объединим методы .groupBy() и .filter(), которые вы уже использовали, чтобы вычислить минимальное (min()) и среднее (avg()) количество пользователей, оценивших каждую песню, а также минимальное и среднее количество песен, оценённых каждым пользователем.

Поскольку наши данные теперь содержат нули для ещё не прослушанных треков, их необходимо исключить с помощью .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).____("____").____().____(____("____")).____()
Редактировать и запускать код