시작하기무료로 시작하기

그룹화 요약 통계

이 연습에서는 이전에 사용했던 .groupBy().filter() 메서드를 결합해, 각 노래에 대해 사용자가 남긴 평점 수의 min()avg()를 계산하고, 각 사용자에 대해 평점을 남긴 노래 수의 min()avg()도 계산해 보겠습니다.

이제 데이터에 아직 소비되지 않은 항목에 대해 0이 포함되어 있으므로, 이런 그룹 요약 통계를 계산할 때는 반드시 .filter()로 제외해야 합니다. msd 데이터셋이 제공되어 있습니다. pyspark.sql.functions에서 가져온 col(), min(), avg() 함수도 이미 임포트되어 있습니다.

이 연습은 강의의 일부입니다

PySpark로 추천 엔진 만들기

강의 보기

연습 안내

  • 예시로, msd 데이터셋에 .filter(), .groupBy(), .count() 메서드를 적용하고 .select()min()을 함께 사용해 데이터셋의 어떤 노래가 받은 평점 수 중 가장 작은 값을 반환합니다. 이를 참고해 msd의 노래들이 받은 암묵적 평점 수의 avg()를 계산하세요.
  • 같은 방식으로, msd 데이터셋에서 userId가 제공한 암묵적 평점 수의 min()avg()를 구하세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

# 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).____("____").____().____(____("____")).____()
코드 편집 및 실행