본문 바로가기

Programming/Python

영화평점 분석하기

# 영화 평점 데이터 분석하기
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