728x90

영화 평점 데이터 분석


데이터 셋 참고 

- http://grouplens.org

자료 참고 : datasets > older datasets > MovieLens 1M Dataset  

 

GroupLens

GroupLens Center for Social and Human-Centered Computing

grouplens.org


# 배열로 데이터 불러오기 

data = np.loadtxt('data/movie/ratings.dat', delimiter='::',dtype=np.int64)
print(data)
print(data.shape)

    <문제>

  1. 1행부터 행까지
  2. 21행부터 행까지 movieid만 출력
  3. 전체 평점 평균
  4. 사용자별 평점 평균(10명만 출력)
  5. 최고 평점 구하기
  6. 사용자별 평점 평균 데이터를 파일로 저장

  <정답>

1.

print(data[:20,:])

2.

data[21:31,:2]

3.

print(data[:,2].mean()) 
print(np.mean(data[:,2]))

4.

user_id = np.unique(data[:,0])
print(user_id.shape)
mean_value =[]

for id in user_id:
    data_user = data[data[:,0] == id,:]
    value = data_user[:,2].mean()
    mean_value.append([id,value])
    
print("결과",mean_value[:10])

5.

arr_mean_values = np.array(mean_value)
#print(arr_mean_values)
print(np.argmax(arr_mean_values[:,1])) # 282 실제로는 283번째 id
print(arr_mean_values[282]) 

print(np.max(arr_mean_values[:,1]))  # 최고평점 확인



print(np.argsort(arr_mean_values[:,1])) # id값 오른차순 정령 282번재 사람이 가장 높은값을 가지고 있다 

print(np.argsort(arr_mean_values[:,1])[::-1]) # << 역순 정렬 

6.

arr_mean_values = np.array(mean_value)    # 배열로 바꿔줌
print(type(arr_mean_values))

np.savetxt('data/movie/id_rations.csv',arr_mean_values,delimiter=',',
          fmt= '%.1f')

 

 

728x90

+ Recent posts