본문 바로가기

Pandas/실전

판다스 - MoviesLens의 영화 평점 데이터

반응형

세가지 데이터프레임이 있다.

 

이를 SQL의 JOIN처럼 활용해야 한다.

 

 

 

 

 

사용자 정보 // 평점 // 영화 정보

 

사용자 정보 테이블과 평점 테이블은 user_id로 merge한 다음

 

그 merge된 테이블과 영화 정보 테이블을 다시 한번 movie_id로 merge하면

 

하나의 대용량 테이블을 만들 수 있다.

 

 

 

 

 

사용자 정보 테이블과 평점 테이블은 user_id로 merge

 

inner조인, 겹치는 컬럼은 user_id뿐

 

 

 

 

 

이를 다시 영화 정보 테이블과 merge

 

 

이제 최종적으로 다루게될 데이터프레임이다.

 

변수명 = data

 

 

 

 

 

 

1. 성별에 따른 영화의 '평균' 평점

 

성별과 영화를 각각 보아야하기 때문에

 

피벗테이블을 이용한다.

 

 

 

 

 

3706개의 영화는 너무 많으니

 

평점 정보가 많이 있는 영화만 추려보자

 

 

 

 

 

 

2. 250건 이상의 평점 정보가 있는 영화 인덱서 만들기

 

 

 

영화 제목으로 그룹핑한 뒤

 

size()를 이용해 개수를 구한다.

 

 

 

 

 

 

250건 이상의 불린 시리즈를 만들고 

 

 

 

이를 이용해 1216개의 영화만 추려낸다.

 

 

 

 

 

사실 필요한 것은 개수가 아니라 영화의 제목이기 때문에

 

시리즈의 인덱스를 다시 받아온다.

 

 

 

 

active_titles = 250건 이상의 평점 건수가 있는 영화 인덱서

 

 

 

 

 

 

 

 

 

 

1번과 2번, 함께 이용

 

 

 

 

1번에서 봤던 피벗테이블과는 달리

 

1216개의 영화에 대한 성별별 평점차이를 볼 수 있다.

 

 

 

 

 

 

 

여성이 평점을 높게 준 영화로 정렬

 

 

 

 

 

 

 

 

 

평점 차이 구하기

 

 

 

평균 평점의 차이를 나타내는 diff 컬럼을 추가한다.

 

 

 

 

 

 

 

그리고 이를 diff 값으로 내림차순하면

 

 

 

여성들이 더 선호하는 영화순으로 나타나게 된다.

 

(여성 - 남성 => 내림차순했기 때문에)

 

 

 

 

 

 

** 이를 역순으로 정렬할 수도 있다.

[::-1]

 

 

오른쪽 데이터프레임은 남성의 선호도 순을 나타낸다.

 

 

 

 

 

 

 

 

성별에 관계없이 호불호가 극명한 영화 찾기

 

 

 

호불호는 평점의 분산으로 측정할 수 있다.

 

우선 영화 제목으로 그룹핑을 하고 분산을 구한다.

 

 

 

 

이 중 우리가 필요한 것은 

 

rating컬럼이기에 해당 컬럼만 뽑아온다.

 

 

 

 

 

그러나 이는 전체 영화를 본 것이므로

 

2번에서 구했던 active_titles로 인덱싱을 하고

 

내림차순으로 정렬해보자

 

 

 

위 데이터의 해석을 하자면

 

성별에 관계 없이, 영화 평점 데이터의 수가 250건 이상인 영화에 한해서

 

평점의 분산이 큰 순서로 나열한 것이다.

 

Dumb & Dumber가 가장 호불호가 강한 것으로 해석할 수 있다.

 

 

 

반응형