import numpy as np
data = np.loadtxt('data/ratings.dat', delimiter = '::', dtype=np.int64)
data
# 데이터 확인하기
# 배열의 크기
print(data.shape)
# 행크기, 열크기 확인
print("행크기 : ", data.shape[0], "열크기 : ", data.shape[1])
# 배열의 차원
print(data.ndim)
# 배열 전체 요소의 개수
print(data.size)
(1000209, 4)
행크기 : 1000209 열크기 : 4
2
4000836
전체 평점 평균 구하기
# 평점 데이터에 접근하고 평균함수 이용
data[:, [2]].mean()
np.mean(data[:, [2]])
3.581564453029317
1번 사용자 데이터에 접근하기
data[:, 0] # 사용자 아이디열에 접근하여 데이터 확인
array([ 1, 1, 1, ..., 6040, 6040, 6040], dtype=int64)
data[data[:, 0]==1]
data[data[:, 0]==1].size
212
# 1번 사용자의 평점의 평균 구해보기
np.mean(data[data[:, 0]==1, [2]])
4.188679245283019
user1 = data[data[:, 0]==1]
np.mean(user1[:, 2])
# 불리언 인덱싱은 행 인덱싱 느낌으로 활용
4.188679245283019
# 영화 아이디 10번의 평점의 평균 구하기
data[data[:, 1]==10][:, 2].mean()
user2 = data[data[:, 1]==10]
np.mean(user2[:, 2])
3.5405405405405403
중복없이 사용자 아이디 확인하기 : unique()
user_id = np.unique(data[:, 0])
user_id
array([ 1, 2, 3, ..., 6038, 6039, 6040], dtype=int64)
user_id.size
6040
user_id_mean = []
for user in user_id :
user_mean = np.mean(data[data[:, 0]==user, 2])
user_id_mean.append([user, user_mean])
user_id_mean
user_id_mean2 = np.array(user_id_mean, dtype=np.int64)
user_id_mean2[user_id_mean2[:, 1] >= 4]
array([[ 1, 4],
[ 4, 4],
[ 7, 4],
...,
[6027, 4],
[6032, 4],
[6034, 4]], dtype=int64)
user_id_mean2[user_id_mean2[:, 1]>=4][:, 0].size
1544
# csv 파일로 저장하기
np.savetxt('data/user_id_mean.csv', user_id_mean, delimiter=',', fmt="%.3f")
# fmt="%.3f" 는 소수점 이하 3자리 표현
댓글