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
Övningsinstruktioner
- Som exempel tillämpas metoderna
.filter(),.groupBy()och.count()på datamängdenmsdtillsammans med.select()ochmin()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äknaavg()för antalet implicita betyg som låtarna imsdhar fått. - Använd samma mall för att hitta
min()ochavg()för antalet implicita betyg somuserIds har angett i datamängdenmsd.
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).____("____").____().____(____("____")).____()