Eggs Sunny Side Up
본문 바로가기
언어/Python

Numpy 실습 - 영화 평점데이터 분석하기

by guswn100059 2023. 4. 3.
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자리 표현

'언어 > Python' 카테고리의 다른 글

Matplotlib  (0) 2023.04.04
Pandas  (0) 2023.04.04
Numpy  (0) 2023.04.01
모듈  (0) 2023.03.31
함수  (0) 2023.03.31

댓글