EmpezarEmpieza gratis

Estadísticas resumidas por grupo

En este ejercicio, vamos a combinar los métodos .groupBy() y .filter() que ya has usado para calcular el número min() y avg() de usuarios que han valorado cada canción, y el número min() y avg() de canciones que cada usuario ha valorado.

Como ahora nuestros datos incluyen 0 para los ítems aún no consumidos, tendremos que aplicar .filter() para excluirlos cuando hagamos estadísticas resumidas por grupo como estas. Aquí tienes disponible el conjunto de datos msd. Las funciones col(), min() y avg() de pyspark.sql.functions ya han sido importadas.

Este ejercicio forma parte del curso

Creación de motores de recomendación con PySpark

Ver curso

Instrucciones del ejercicio

  • Como ejemplo, se aplican los métodos .filter(), .groupBy() y .count() al conjunto de datos msd junto con .select() y min() para devolver el número más pequeño de valoraciones que ha recibido cualquier canción del conjunto. Úsalo como modelo para calcular el número avg() de valoraciones implícitas que han recibido las canciones en msd.
  • Usando el mismo modelo, busca el número min() y avg() de valoraciones implícitas que los userId han aportado en el conjunto de datos msd.

ejercicio interactivo práctico

Prueba este ejercicio completando este código de ejemplo.

# 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).____("____").____().____(____("____")).____()
Editar y ejecutar código