# 영화 평점 데이터 분석하기
import numpy as np
data = np.loadtxt('data/ratings.dat',
delimiter = '::', dtype = np.int64)
data
# array([[ 1, 1193, 5, 978300760],
# [ 1, 661, 3, 978302109],
# [ 1, 914, 3, 978301968],
# ...,
# [ 6040, 562, 5, 956704746],
# [ 6040, 1096, 4, 956715648],
# [ 6040, 1097, 4, 956715569]], dtype=int64)
# 행(평점 작성개수)이 1000209개 열(데이터의 종류)이 4개
# 1000209 * 4 = 4000836
print(data.shape)
print(data.size)
print(data.ndim)
# (1000209, 4)
# 4000836
# 2
# 전체 유저의 평균 평점
# 1. 평점 데이터만 추출 (인덱싱, 슬라이싱)
# 2. 평균 구하기 (mean)
rating_all_mean = data[:, 2].mean()
rating_all_mean
# 3.581564453029317
# 또는
rating_all_mean = np.mean(data[:, 2])
rating_all_mean
# 3.581564453029317
# 각 사용자 별 평균 평점
# 1번 사용자의 평균 평점 구하기
# 1. 1번 사용자의 데이터만 Boolean Indexing 추출
# 2. 1번 사용자의 데이터에서 평점만 추출 (인덱싱, 슬라이싱)
# 3. 평균 구하기
user_id1 = data[data[:, 0] == 1]
user_id1Score = user_id1[:,2]
user_id1Mean = user_id1Score.mean()
user_id1Mean
# 4.188679245283019
# 또는
# 1번 유저의 평균 평점
data[data[:, 0] == 1][:,2].mean()
score = []
for i in user_id :
user_score = data[data[:, 0] == i][:,2].mean()
score.append([i, user_score])
score
# 각 사용자 별 평균 평점이 4점 이상인 사용자 구하기
# 리스트는 Boolean Indexing이 안되, 배열로 변환해야 인덱싱, 슬라이싱을 할 수 있음
score_array = np.array(score)
score_array[score_array[:, 1] >= 4][:, 0].astype('int')
# array([ 1, 4, 7, ..., 6027, 6032, 6034])
# csv 저장
# np.savetxt('user_id_mean.csv', score, delimiter = ', ', fmt = "%3f")
import numpy as np
data = np.loadtxt('data/ratings.dat',
delimiter = '::', dtype = np.int64)
data
# array([[ 1, 1193, 5, 978300760],
# [ 1, 661, 3, 978302109],
# [ 1, 914, 3, 978301968],
# ...,
# [ 6040, 562, 5, 956704746],
# [ 6040, 1096, 4, 956715648],
# [ 6040, 1097, 4, 956715569]], dtype=int64)
print(data.shape)
print(data.size)
print(data.ndim)
# (1000209, 4)
# 4000836
# 2
movie_id = np.unique(data[:,1])
movie_id
# array([ 1, 2, 3, ..., 3950, 3951, 3952], dtype=int64)
score = []
for i in movie_id :
movie_score = data[data[:, 1] == i][:,2].mean()
score.append([i, movie_score])
score_array = np.array(score)
arr = score_array[score_array[:, 1] >= 4.5][:, 0].astype('int')
arr
# array([ 50, 53, 318, 439, 527, 557, 578, 745, 787, 858, 989,
# 1148, 1795, 1830, 2019, 2309, 2480, 2503, 2905, 3172, 3233, 3245,
# 3280, 3382, 3517, 3607, 3656, 3881, 3888])
arr.shape
# (29,)
# 또는
len(arr)
# 29
np.savetxt('movie_id_mean.csv', score, delimiter = ', ', fmt = "%3f")
'Programming > Python' 카테고리의 다른 글
튜플 (0) | 2020.09.15 |
---|---|
입력값이 몇 개가 될지 모를 때(*args) (0) | 2020.09.15 |
Pandas (0) | 2020.03.09 |
Numpy (0) | 2020.03.09 |
JupyterNotebook 설치 (0) | 2020.03.09 |