Kom igångKom igång gratis

Grupperade sammanfattande statistikmått

I den här övningen ska du kombinera metoderna .groupBy() och .filter() som du använt tidigare, för att beräkna min() och avg() för antalet användare som har betygsatt varje låt, samt min() och avg() för antalet låtar som varje användare har betygsatt.

Eftersom våra data nu innehåller nollor för objekt som ännu inte konsumerats behöver vi filtrera bort dem med .filter() när vi beräknar grupperade sammanfattande statistikmått. Datamängden msd är redan tillgänglig för dig. Funktionerna col(), min() och avg() från pyspark.sql.functions har importerats åt dig.

Den här övningen är en del av kursen

Bygg rekommendationsmotorer med PySpark

Visa kurs

Övningsinstruktioner

  • Som exempel tillämpas metoderna .filter(), .groupBy() och .count() på datamängden msd tillsammans med .select() och min() för att returnera det lägsta antalet betyg som någon låt i datamängden har fått. Använd detta som mall för att beräkna avg() för antalet implicita betyg som låtarna i msd har fått.
  • Använd samma mall för att hitta min() och avg() för antalet implicita betyg som userIds har angett i datamängden msd.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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).____("____").____().____(____("____")).____()
Redigera och kör kod