Gruppierte zusammenfassende Statistiken
In dieser Übung kombinieren wir die Methoden .groupBy() und .filter(), die du zuvor verwendet hast, um die min()- und avg()-Anzahl an Nutzern zu berechnen, die jedes Lied bewertet haben, sowie die min()- und avg()-Anzahl an Liedern, die jeder Nutzer bewertet hat.
Da unsere Daten jetzt 0 für noch nicht konsumierte Items enthalten, müssen wir sie bei gruppierten zusammenfassenden Statistiken wie dieser mit .filter() herausfiltern. Der Datensatz msd steht dir hier zur Verfügung. Die Funktionen col(), min() und avg() aus pyspark.sql.functions sind bereits für dich importiert.
Diese Übung ist Teil des Kurses
<Kurs>Recommendation Engines mit PySpark erstellen</Kurs>Übungsanweisungen
- Als Beispiel werden die Methoden
.filter(),.groupBy()und.count()auf den Datensatzmsdangewendet und zusammen mit.select()undmin()genutzt, um die kleinste Anzahl an Bewertungen zurückzugeben, die ein beliebiges Lied im Datensatz erhalten hat. Nutze dies als Vorlage, um dieavg()-Anzahl impliziter Bewertungen zu berechnen, die die Lieder inmsderhalten haben. - Verwende dasselbe Vorgehen, um die
min()- undavg()-Anzahl impliziter Bewertungen zu finden, dieuserIds im Datensatzmsdabgegeben haben.
Interaktive praktische Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
# 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).____("____").____().____(____("____")).____()