반응형
> 데이터 다운로드
MovieLens
GroupLens Research has collected and made available rating data sets from the MovieLens web site ( The data sets were collected over various periods of time, depending on the size of the set. …
grouplens.org
EDA(탐색적 데이터 분석)¶
moive lens data 데이터를 이용한 pandas 실습
In [1]:
import pandas as pd
import numpy as np
0. DataLoad¶
In [2]:
movie = pd.read_csv('./data/movies/movies.csv')
rating = pd.read_csv('./data/movies/ratings.csv')
In [3]:
movie.head()
Out[3]:
movieId | title | genres | |
---|---|---|---|
0 | 1 | Toy Story (1995) | Adventure|Animation|Children|Comedy|Fantasy |
1 | 2 | Jumanji (1995) | Adventure|Children|Fantasy |
2 | 3 | Grumpier Old Men (1995) | Comedy|Romance |
3 | 4 | Waiting to Exhale (1995) | Comedy|Drama|Romance |
4 | 5 | Father of the Bride Part II (1995) | Comedy |
In [4]:
rating.head()
Out[4]:
userId | movieId | rating | timestamp | |
---|---|---|---|---|
0 | 1 | 1 | 4.0 | 964982703 |
1 | 1 | 3 | 4.0 | 964981247 |
2 | 1 | 6 | 4.0 | 964982224 |
3 | 1 | 47 | 5.0 | 964983815 |
4 | 1 | 50 | 5.0 | 964982931 |
1. 사용자가 평가한 모든 영화의 전체 평균 평점을 출력하세요¶
In [5]:
print(rating['rating'].mean())
3.501556983616962
2. 각 사용자별 평균 평점을 구하세요¶
In [6]:
user_rate = rating.groupby('userId')['rating'].mean()
In [7]:
user_rate
Out[7]:
userId 1 4.366379 2 3.948276 3 2.435897 4 3.555556 5 3.636364 ... 606 3.657399 607 3.786096 608 3.134176 609 3.270270 610 3.688556 Name: rating, Length: 610, dtype: float64
3. 각 영화별 평균 평점을 구하세요.¶
출력시 정렬은 movieID로 오름차순 정렬
In [8]:
movie_rate = rating.groupby('movieId')['rating'].mean()
movie_rate
Out[8]:
movieId 1 3.920930 2 3.431818 3 3.259615 4 2.357143 5 3.071429 ... 193581 4.000000 193583 3.500000 193585 3.500000 193587 3.500000 193609 4.000000 Name: rating, Length: 9724, dtype: float64
In [9]:
movie_rate_with_title = pd.merge(movie, movie_rate,
left_on='movieId',
right_index=True,
how='inner')
movie_rate_with_title = movie_rate_with_title.drop('genres', axis=1)
movie_rate_with_title
Out[9]:
movieId | title | rating | |
---|---|---|---|
0 | 1 | Toy Story (1995) | 3.920930 |
1 | 2 | Jumanji (1995) | 3.431818 |
2 | 3 | Grumpier Old Men (1995) | 3.259615 |
3 | 4 | Waiting to Exhale (1995) | 2.357143 |
4 | 5 | Father of the Bride Part II (1995) | 3.071429 |
... | ... | ... | ... |
9737 | 193581 | Black Butler: Book of the Atlantic (2017) | 4.000000 |
9738 | 193583 | No Game No Life: Zero (2017) | 3.500000 |
9739 | 193585 | Flint (2017) | 3.500000 |
9740 | 193587 | Bungo Stray Dogs: Dead Apple (2018) | 3.500000 |
9741 | 193609 | Andrew Dice Clay: Dice Rules (1991) | 4.000000 |
9724 rows × 3 columns
4. 평균 평점이 가장 높은 영화의 제목을 출력하세요¶
단, 동률이 있을 경우 모두 출력하고 title을 기준으로 오름차순 정렬하세요
In [10]:
top_rating = movie_rate.max() # 3번에서 구한 영화별 평균평점에서 최대값 : 5
top_movie_lst = movie_rate[movie_rate==top_rating] # 평균평점이 5인 영화의 리스트
In [11]:
top_movie = pd.merge(movie, top_movie_lst,
left_on='movieId',
right_index=True,
how='inner')
top_movie = top_movie.sort_values(by='title', ascending=True)
top_movie = top_movie.drop('genres', axis=1)
top_movie
Out[11]:
movieId | title | rating | |
---|---|---|---|
5690 | 27751 | 'Salem's Lot (2004) | 5.0 |
7332 | 77846 | 12 Angry Men (1997) | 5.0 |
9046 | 141816 | 12 Chairs (1976) | 5.0 |
3893 | 5468 | 20 Million Miles to Earth (1957) | 5.0 |
5639 | 27373 | 61* (2001) | 5.0 |
... | ... | ... | ... |
9711 | 187717 | Won't You Be My Neighbor? (2018) | 5.0 |
8355 | 108795 | Wonder Woman (2009) | 5.0 |
9289 | 158398 | World of Glory (1991) | 5.0 |
9560 | 173351 | Wow! A Talking Fish! (1983) | 5.0 |
7521 | 84273 | Zeitgeist: Moving Forward (2011) | 5.0 |
296 rows × 3 columns
5. Comedy 영화 중 가장 평점이 낮은 영화의 제목을 출력하세요¶
단, 동률이 있을 경우 모두 출력하고 title을 기준으로 오름차순 정렬하세요
In [12]:
movie_info = pd.merge(movie, movie_rate,
left_on='movieId',
right_index=True,
how='inner')
movie_info # 영화 테이블에 3번에서 구한 영화별 평균평점을 조인시켜 영화 정보 데이터 프레임을 만듦
Out[12]:
movieId | title | genres | rating | |
---|---|---|---|---|
0 | 1 | Toy Story (1995) | Adventure|Animation|Children|Comedy|Fantasy | 3.920930 |
1 | 2 | Jumanji (1995) | Adventure|Children|Fantasy | 3.431818 |
2 | 3 | Grumpier Old Men (1995) | Comedy|Romance | 3.259615 |
3 | 4 | Waiting to Exhale (1995) | Comedy|Drama|Romance | 2.357143 |
4 | 5 | Father of the Bride Part II (1995) | Comedy | 3.071429 |
... | ... | ... | ... | ... |
9737 | 193581 | Black Butler: Book of the Atlantic (2017) | Action|Animation|Comedy|Fantasy | 4.000000 |
9738 | 193583 | No Game No Life: Zero (2017) | Animation|Comedy|Fantasy | 3.500000 |
9739 | 193585 | Flint (2017) | Drama | 3.500000 |
9740 | 193587 | Bungo Stray Dogs: Dead Apple (2018) | Action|Animation | 3.500000 |
9741 | 193609 | Andrew Dice Clay: Dice Rules (1991) | Comedy | 4.000000 |
9724 rows × 4 columns
In [13]:
comedy = movie_info[movie_info['genres'].str.contains('Comedy')] # genres 컬럼에서 comedy를 포함하는 영화를 추출.
nojam_comedy = comedy[comedy['rating']==comedy['rating'].min()] # comedy영화의 DataFrame에서 평점평균이 가장 낮는 영화를 boolean index.
nojam_comedy = nojam_comedy.sort_values(by='title', ascending=True) # 제목 기준 오름차순 정렬
nojam_comedy = nojam_comedy.drop('rating', axis=1)
6. 2015년에 평가된 모든 Romance 영화의 평균 평점은?¶
In [14]:
import datetime as dt
import time
start = dt.datetime(2015,1,1,0,0,0) # 2015년 1월 1일 0시 0분 0초
end = dt.datetime(2016,1,1,0,0,0) # 2016년 1월 1일 0시 0분 0초
start_timestamp = time.mktime(start.timetuple()) # 1420038000.0
end_timestamp = time.mktime(end.timetuple()) # 1451574000.0
# timestamp가 start 이상, end 미만인 행을 boolean indexing
# rate_2015 = rating[rating['timestamp'] >= start_timestamp] # 2015년 이상
# rate_2015 = rate_2015[rate_2015['timestamp'] < end_timestamp] # 2016년 미만
rate_2015 = rating[(rating['timestamp'] >= start_timestamp) & (rating['timestamp'] < end_timestamp)]
rate_2015 # 2015년에 평가된 모든 정보
Out[14]:
userId | movieId | rating | timestamp | |
---|---|---|---|---|
232 | 2 | 318 | 3.0 | 1445714835 |
233 | 2 | 333 | 4.0 | 1445715029 |
234 | 2 | 1704 | 4.5 | 1445715228 |
235 | 2 | 3578 | 4.0 | 1445714885 |
236 | 2 | 6874 | 4.0 | 1445714952 |
... | ... | ... | ... | ... |
95936 | 601 | 79132 | 5.0 | 1441639524 |
95947 | 601 | 109487 | 5.0 | 1441639184 |
95948 | 601 | 112556 | 4.0 | 1441639189 |
95951 | 601 | 116797 | 4.0 | 1441639186 |
95955 | 601 | 141846 | 4.0 | 1441639208 |
6615 rows × 4 columns
In [15]:
romance = movie[movie['genres'].str.contains('Romance')] # 장르가 Romance인 모든 영화
romance
Out[15]:
movieId | title | genres | |
---|---|---|---|
2 | 3 | Grumpier Old Men (1995) | Comedy|Romance |
3 | 4 | Waiting to Exhale (1995) | Comedy|Drama|Romance |
6 | 7 | Sabrina (1995) | Comedy|Romance |
10 | 11 | American President, The (1995) | Comedy|Drama|Romance |
14 | 15 | Cutthroat Island (1995) | Action|Adventure|Romance |
... | ... | ... | ... |
9639 | 179511 | Emerald Green (2016) | Adventure|Drama|Fantasy|Romance |
9660 | 181315 | Phantom Thread (2017) | Drama|Romance |
9691 | 184349 | Elsa & Fred (2005) | Comedy|Drama|Romance |
9715 | 188751 | Mamma Mia: Here We Go Again! (2018) | Comedy|Romance |
9725 | 190207 | Tilt (2011) | Drama|Romance |
1596 rows × 3 columns
In [16]:
romance_2015 = pd.merge(romance, rate_2015,
on='movieId',
how='inner') # 2015년에 평가된 정보와 Romance 장르의 영화를 movieId로 inner join함.
# 2015년에 평가되었지만 로맨스 장르가 아닌 영화와 로맨스 장르이지만 2015년에 평가되지 않은 영화를 제외.
romance_2015 # 2015년에 평가된 모든 Romance 장르 영화의 DataFrame
Out[16]:
movieId | title | genres | userId | rating | timestamp | |
---|---|---|---|---|---|---|
0 | 3 | Grumpier Old Men (1995) | Comedy|Romance | 308 | 0.5 | 1421374465 |
1 | 7 | Sabrina (1995) | Comedy|Romance | 177 | 1.0 | 1435534432 |
2 | 11 | American President, The (1995) | Comedy|Drama|Romance | 177 | 3.0 | 1435890660 |
3 | 17 | Sense and Sensibility (1995) | Drama|Romance | 227 | 3.5 | 1447210004 |
4 | 17 | Sense and Sensibility (1995) | Drama|Romance | 323 | 3.5 | 1422640288 |
... | ... | ... | ... | ... | ... | ... |
1264 | 139747 | Before We Go (2014) | Romance | 563 | 3.5 | 1448243169 |
1265 | 139915 | How to Make Love Like an Englishman (2014) | Comedy|Romance | 21 | 2.5 | 1441393919 |
1266 | 140162 | Love (2015) | Drama|Romance | 318 | 4.5 | 1450717949 |
1267 | 140301 | The Escort (2015) | Comedy|Romance | 21 | 3.0 | 1441393974 |
1268 | 146024 | A Man from Boulevard des Capucines (1987) | Comedy|Romance|Western | 256 | 4.0 | 1446579860 |
1269 rows × 6 columns
In [17]:
romance_2015['rating'].mean()
Out[17]:
3.396375098502758
7. 모든 영화장르 중 사용자 평점이 가장 좋은 영화장르는 무엇인가요?¶
동률이 잇으면 영화장르를 기준으로 오름차순 정렬하세요
In [18]:
genres = movie['genres'].unique() # 장르 컬럼의 값들이 형태 : 한 영화에 한 장르가 아니라 여러 장르가 |로 구분되어서 표시되고 있음
display(genres)
print(type(genres))
array(['Adventure|Animation|Children|Comedy|Fantasy', 'Adventure|Children|Fantasy', 'Comedy|Romance', 'Comedy|Drama|Romance', 'Comedy', 'Action|Crime|Thriller', 'Adventure|Children', 'Action', 'Action|Adventure|Thriller', 'Comedy|Horror', 'Adventure|Animation|Children', 'Drama', 'Action|Adventure|Romance', 'Crime|Drama', 'Drama|Romance', 'Action|Comedy|Crime|Drama|Thriller', 'Comedy|Crime|Thriller', 'Crime|Drama|Horror|Mystery|Thriller', 'Drama|Sci-Fi', 'Children|Drama', 'Adventure|Drama|Fantasy|Mystery|Sci-Fi', 'Mystery|Sci-Fi|Thriller', 'Children|Comedy', 'Drama|War', 'Action|Crime|Drama', 'Action|Adventure|Fantasy', 'Comedy|Drama|Thriller', 'Mystery|Thriller', 'Animation|Children|Drama|Musical|Romance', 'Crime|Mystery|Thriller', 'Adventure|Drama', 'Drama|Thriller', 'Comedy|Crime', 'Action|Sci-Fi|Thriller', 'Action|Comedy|Horror|Thriller', 'Comedy|Drama', 'Documentary', 'Action|Crime|Drama|Thriller', 'Crime|Drama|Romance', 'Action|Adventure|Drama', 'Action|Thriller', 'Drama|Horror|Thriller', 'Comedy|Horror|Romance', 'Adventure|Comedy|Crime|Romance', 'Adventure|Children|Comedy|Musical', 'Action|Drama|War', 'Crime|Drama|Thriller', 'Action|Adventure|Comedy|Crime', 'Drama|Mystery', 'Drama|Mystery|Romance', 'Thriller', 'Adventure|Drama|IMAX', 'Action|Drama|Romance|War', 'Drama|Horror', 'Adventure|Drama|War', 'Comedy|War', 'Crime|Drama|Mystery', 'Action|Adventure|Mystery|Sci-Fi', 'Drama|Thriller|War', 'Action|Romance|Western', 'Crime|Film-Noir|Mystery|Thriller', 'Comedy|Crime|Drama', 'Action|Drama|Romance', 'Adventure|Children|Drama', 'Action|Adventure|Crime|Thriller', 'Action|Crime|Sci-Fi', 'Horror', 'Action|Children', 'Comedy|Horror|Thriller', 'Fantasy|Horror|Mystery', 'Comedy|Fantasy', 'Horror|Sci-Fi', 'Action|Crime|Drama|Mystery|Sci-Fi|Thriller', 'Drama|Musical|Romance', 'Drama|Fantasy', 'Action|Adventure|Sci-Fi', 'Western', 'Adventure|Comedy|Crime|Mystery', 'Adventure|Comedy', 'Action|Comedy|Romance', 'Animation|Children|Comedy|Romance', 'Drama|Musical', 'Children|Comedy|Fantasy', 'Comedy|Sci-Fi', 'Adventure|Children|Comedy|Fantasy|Romance', 'Drama|Fantasy|Romance', 'Drama|Romance|War|Western', 'Drama|Horror|Sci-Fi', 'Action|Crime', 'Action|Drama|Sci-Fi|Thriller', 'Comedy|Crime|Drama|Thriller', 'Action|Thriller|Western', 'Horror|Thriller', 'Animation|Children', 'Children|Drama|Fantasy|Mystery', 'Action|Drama|Thriller', 'Comedy|Drama|Fantasy', 'Film-Noir|Thriller', 'Action|Comedy|Sci-Fi', 'Adventure|Drama|Sci-Fi', 'Action|Crime|Horror', 'Children', 'Drama|Film-Noir|Romance', 'Drama|Mystery|Thriller', 'Action|Crime|Fantasy|Thriller', 'Comedy|Drama|Romance|War', 'Action|Comedy', 'Adventure|Children|Romance', 'Adventure|Animation|Children|Drama|Musical|IMAX', 'Drama|Horror|Mystery|Thriller', 'Action|Comedy|Crime|Fantasy', 'Adventure|Comedy|Western', 'Action|Romance|Thriller', 'Action|Adventure|Comedy|Romance|Thriller', 'Drama|Horror|Romance|Thriller', 'Drama|Romance|War', 'Action|Fantasy', 'Comedy|Thriller', 'Action|Comedy|Crime|Thriller', 'Horror|Sci-Fi|Thriller', 'Drama|Mystery|Romance|Thriller', 'Action|Comedy|Drama', 'Drama|Western', 'Action|Adventure|Crime|Drama|Romance|Thriller', 'Action|Comedy|War', 'Action|Adventure|Sci-Fi|Thriller', 'Action|Adventure|Comedy|Fantasy', 'Comedy|Western', 'Comedy|Mystery', 'Comedy|Drama|Romance|Thriller', 'Action|Children|Romance', 'Action|Drama|Sci-Fi', 'Action|Drama', 'Comedy|Mystery|Romance', 'Action|Drama|Mystery', 'Action|Crime|Drama|Sci-Fi|Thriller', 'Crime|Thriller', 'Comedy|Crime|Horror', 'Action|Adventure|Fantasy|Mystery', 'Comedy|Romance|Thriller', 'Action|Adventure|Children|Comedy|Fantasy|Sci-Fi', 'Action|Mystery|Thriller', 'Animation|Children|Fantasy|Musical', 'Action|Adventure|Comedy|Romance', 'Action|Drama|Western', 'Action|Adventure|Animation|Children|Fantasy', 'Comedy|Drama|Fantasy|Romance|Thriller', 'Adventure|Animation|Children|Comedy|Musical', 'Action|Sci-Fi', 'Adventure|Drama|Western', 'Crime|Horror|Thriller', 'Animation|Children|Drama|Fantasy|Musical', 'Animation|Children|Fantasy|Musical|Romance|IMAX', 'Adventure|Western', 'Action|Comedy|Crime', 'Fantasy|Horror', 'Action|Adventure|Animation|Horror|Sci-Fi', 'Action|Horror|Sci-Fi', 'Crime|Drama|Mystery|Thriller', 'Adventure|Animation|Children|Fantasy|Musical|Romance', 'Romance', 'Action|Crime|Drama|War', 'Action|Adventure|Mystery|Thriller', 'Adventure|Animation|Children|Fantasy|Musical', 'Comedy|Drama|War', 'Adventure|Animation|Children|Comedy|Fantasy|Sci-Fi', 'Adventure|Comedy|Sci-Fi', 'Drama|Mystery|Romance|Sci-Fi|Thriller', 'Action|Adventure|Comedy|War', 'Action|Adventure', 'Drama|Mystery|Western', 'Comedy|Fantasy|Sci-Fi', 'Adventure|Animation|Comedy', 'Drama|Fantasy|Horror|Thriller', 'Action|Adventure|Romance|Thriller', 'Animation|Sci-Fi', 'Animation|Children|Comedy', 'Horror|Mystery', 'Comedy|Fantasy|Romance|Sci-Fi', 'Action|Adventure|Drama|Thriller', 'Comedy|Fantasy|Musical', 'Crime|Drama|Romance|Thriller', 'Crime|Drama|Musical|Thriller', 'Sci-Fi|Thriller', 'Children|Drama|Fantasy', 'Adventure|Animation|Children|Musical', 'Adventure|Drama|Romance|War', 'Comedy|Musical|Romance', 'Musical|Romance', 'Comedy|Musical', 'Action|Adventure|Mystery|Romance|Thriller', 'Comedy|Crime|Mystery|Romance|Thriller', 'Film-Noir|Mystery', 'Comedy|Drama|Musical|Romance', 'Musical', 'Adventure|Children|Fantasy|Musical', 'Drama|Film-Noir|Mystery|Thriller', 'Film-Noir|Romance|Thriller', 'Mystery|Romance|Thriller', 'Crime|Mystery|Romance|Thriller', 'Adventure', 'Crime|Film-Noir|Mystery', 'Drama|Romance|Western', 'Children|Drama|Fantasy|Romance', 'Adventure|Comedy|Romance|War', 'Adventure|Comedy|Crime|Drama|Romance', 'Romance|War', 'Crime|Film-Noir', 'Children|Comedy|Western', 'Children|Comedy|Fantasy|Romance', 'Children|Comedy|Romance', 'Children|Comedy|Drama', 'Children|Comedy|Mystery', 'Animation|Children|Fantasy|Musical|Romance', 'Animation|Children|Musical', 'Children|Comedy|Fantasy|Musical', 'Animation|Children|Drama|Musical', 'Adventure|Children|Musical', 'Animation|Children|Drama', 'Action|Horror|Sci-Fi|Thriller', 'Documentary|Drama', 'Animation|Children|Comedy|Fantasy|Musical|Romance', 'Drama|Romance|Thriller', 'Children|Drama|Sci-Fi', 'Action|Romance', 'Adventure|Comedy|Fantasy', 'Animation|Children|Comedy|Crime', 'Animation|Comedy|Drama|Fantasy', 'Crime|Drama|Film-Noir', 'Documentary|Musical', 'Action|Adventure|Comedy|Fantasy|Romance', 'Fantasy|Sci-Fi', 'Action|Adventure|Horror|Sci-Fi', 'Action|Adventure|Western', 'Crime|Drama|Sci-Fi|Thriller', 'Film-Noir|Mystery|Thriller', 'Action|Adventure|Comedy|Fantasy|Horror', 'Adventure|Drama|Romance', 'Crime|Horror', 'Action|Comedy|Musical', 'Adventure|Animation|Children|Comedy|Sci-Fi', 'Drama|Mystery|Sci-Fi', 'Comedy|Fantasy|Horror', 'Crime|Drama|Film-Noir|Thriller', 'Crime|Film-Noir|Thriller', 'Action|Crime|Romance|Thriller', 'Drama|Sci-Fi|Thriller', 'Action|Adventure|Drama|Western', 'Comedy|Horror|Sci-Fi', 'Comedy|Musical|War', 'Action|Comedy|Fantasy|Horror', 'Action|Adventure|Drama|War', 'Action|Drama|Mystery|Romance|Thriller', 'Comedy|Fantasy|Romance', 'Crime|Thriller|War', 'Comedy|Mystery|Thriller', 'Comedy|Drama|Film-Noir', 'Action|Adventure|Animation|Sci-Fi', 'Action|Western', 'Fantasy|Horror|Romance|Thriller', 'Drama|Fantasy|Horror', 'Horror|Mystery|Thriller', 'Adventure|Children|Comedy', 'Adventure|Sci-Fi', 'Action|Mystery|Sci-Fi', 'Action|Comedy|Western', 'Action|Horror', 'Action|Comedy|Crime|Drama|Sci-Fi', 'Adventure|Animation|Comedy|Crime', 'Comedy|Horror|Mystery|Thriller', 'Action|Romance|War|Western', 'Comedy|Drama|Fantasy|Romance', 'Action|Adventure|Comedy|Thriller', 'Crime', 'Crime|Drama|Fantasy|Film-Noir|Mystery|Romance', 'Action|Comedy|Crime|Drama', 'Action|Romance|Sci-Fi|Thriller', 'Comedy|Drama|Mystery|Romance', 'Action|Adventure|Children', 'Comedy|Crime|Romance', 'Action|Adventure|Comedy', 'Action|Adventure|Comedy|Sci-Fi', 'Action|Adventure|Fantasy|Thriller', 'Children|Fantasy', 'Adventure|Romance', 'Action|Thriller|War', 'Children|Comedy|Romance|Sci-Fi', 'Romance|Thriller', 'Comedy|Drama|Sci-Fi', 'Adventure|Animation|Children|Drama|Musical', 'Action|Adventure|Drama|Sci-Fi', 'Action|Children|Comedy', 'Adventure|Film-Noir|Sci-Fi|Thriller', 'Crime|Drama|Fantasy|Thriller', 'Crime|Romance|Thriller', 'Crime|Drama|Mystery|Romance|Thriller', 'Documentary|IMAX', 'Comedy|Crime|Drama|Mystery|Thriller', 'Comedy|Documentary', 'Adventure|Children|Comedy|Fantasy', 'Crime|Drama|Romance|War', 'Adventure|Comedy|Drama', 'Adventure|Comedy|Romance', 'Adventure|Animation|Children|Comedy|Drama|Musical|Romance', 'Action|Crime|Mystery|Sci-Fi|Thriller', 'Comedy|Crime|Drama|Romance|Thriller', 'Animation|Children|Fantasy|War', 'Comedy|Drama|Musical', 'Adventure|Fantasy|Musical', 'Action|Adventure|Children|Comedy|Fantasy', 'Drama|Mystery|Sci-Fi|Thriller', 'Adventure|Comedy|Sci-Fi|Western', 'Children|Fantasy|Musical', 'Adventure|Animation|Children|Fantasy', 'Children|Sci-Fi', 'Children|Comedy|Sci-Fi', 'Action|Adventure|Children|Comedy', 'Adventure|Children|Sci-Fi', 'Action|Animation|Children|Crime', 'Children|Comedy|Fantasy|Horror', 'Adventure|Children|Comedy|Fantasy|Sci-Fi', 'Action|Crime|Drama|Mystery|Thriller', 'Film-Noir', 'Drama|Fantasy|Mystery', 'Animation|Children|Comedy|Musical', 'Animation|Children|Comedy|Musical|Romance', 'Children|Comedy|Musical', 'Children|Musical', 'Adventure|Comedy|Musical', 'Adventure|Animation|Children|Crime|Drama', 'Children|Drama|Fantasy|Mystery|Thriller', 'Adventure|Children|Fantasy|Western', 'Animation|Children|Comedy|Drama|Fantasy', 'Action|Crime|Mystery|Thriller', 'Adventure|Animation|Children|Drama|Fantasy', 'Adventure|Animation|Children|Drama', 'Adventure|Fantasy', 'Adventure|Animation|Children|Comedy', 'Adventure|Animation|Children|Musical|Western', 'Adventure|Fantasy|Romance', 'Adventure|Drama|Fantasy', 'Action|Comedy|Drama|Horror', 'Action|Horror|Thriller', 'Drama|Film-Noir|Thriller', 'Adventure|Drama|Mystery|Thriller', 'Horror|Mystery|Sci-Fi|Thriller', 'Drama|Fantasy|Thriller', 'Adventure|Drama|Fantasy|Romance', 'Sci-Fi', 'Drama|Fantasy|Mystery|Romance', 'Action|Sci-Fi|War', 'Fantasy|Horror|Thriller', 'Horror|Western', 'Action|Adventure|Fantasy|Horror', 'Adventure|Fantasy|Romance|Sci-Fi|Thriller', 'Comedy|Crime|Mystery', 'Action|Drama|Romance|Sci-Fi', 'Animation|Musical', 'Action|Adventure|Thriller|War', 'Comedy|Crime|Mystery|Thriller', 'Action|Adventure|Children|Fantasy|Mystery|Thriller', 'Action|Adventure|Children|Drama', 'Action|Adventure|Drama|Fantasy|Thriller', 'Horror|Mystery|Sci-Fi', 'Drama|Horror|Sci-Fi|Thriller', 'Action|Comedy|Romance|Thriller', 'Action|War', 'Adventure|Comedy|Thriller', 'Action|Sci-Fi|Thriller|Western', 'Drama|Romance|Sci-Fi|Thriller', 'Drama|Film-Noir', 'Action|Adventure|Comedy|Fantasy|Horror|Thriller', 'Action|Adventure|Crime|Sci-Fi|Thriller', 'Adventure|Drama|Mystery', 'Horror|Romance', 'Comedy|Horror|Musical|Sci-Fi', 'War', 'Comedy|Romance|Sci-Fi', 'Animation|Comedy|Musical', 'Action|Comedy|Sci-Fi|Western', 'Action|Comedy|Fantasy', 'Adventure|Drama|Thriller', 'Action|Adventure|Comedy|Fantasy|Mystery', 'Comedy|Horror|Musical', 'Adventure|Animation|Children|Drama|Sci-Fi', 'Drama|Horror|Mystery', 'Action|Mystery', 'Comedy|Horror|Romance|Thriller', 'Action|Drama|Romance|Thriller', 'Animation|Horror|Mystery|Thriller', 'Adventure|Children|Comedy|Drama', 'Adventure|Sci-Fi|Thriller', 'Adventure|Animation|Comedy|Fantasy|Musical', 'Animation|Children|Fantasy', 'Action|Adventure|Comedy|Drama|War', 'Crime|Drama|Western', 'Comedy|Crime|Drama|Fantasy', 'Drama|Film-Noir|Mystery|Romance', 'Musical|Romance|War', 'Adventure|Comedy|Fantasy|Sci-Fi', 'Drama|Fantasy|Musical', 'Action|Crime|Sci-Fi|Thriller', 'Adventure|Animation|Children|Comedy|Crime|Fantasy|Mystery', 'Action|Adventure|Animation|Drama|Fantasy', 'Adventure|Animation|Children|Fantasy|Sci-Fi', 'Fantasy|Horror|Mystery|Romance', 'Action|Fantasy|Horror|Mystery|Thriller', 'Drama|Romance|Sci-Fi', 'Animation|Children|Musical|IMAX', 'Action|Comedy|Horror', 'Action|Crime|Thriller|Western', 'Fantasy|Horror|Mystery|Thriller', 'Romance|Western', 'Adventure|Crime|Drama|Romance', 'Adventure|Crime|Drama', 'Animation|Comedy', 'Action|Children|Comedy|Fantasy|Sci-Fi', 'Action|Children|Fantasy', 'Action|Adventure|Drama|Thriller|Western', 'Crime|Horror|Mystery|Thriller', 'Action|Adventure|Comedy|Western', 'Action|Drama|Thriller|Western', 'Adventure|Animation|Fantasy|Sci-Fi', 'Comedy|Horror|Sci-Fi|Thriller', 'Adventure|Drama|Romance|Sci-Fi', 'Film-Noir|Horror|Mystery|Thriller', 'Action|Adventure|Animation|Children|Sci-Fi', 'Action|Fantasy|Horror|Sci-Fi|Thriller', 'Action|Comedy|Crime|Romance', 'Adventure|Horror|Sci-Fi', 'Adventure|Animation|Children|Sci-Fi', 'Adventure|Comedy|Crime', 'Action|Drama|War|Western', 'Action|Crime|Mystery|Romance|Thriller', 'Romance|Sci-Fi', 'Fantasy|Romance', 'Action|Adventure|Fantasy|Sci-Fi', 'Adventure|Comedy|Horror', 'Animation|Comedy|Fantasy', 'Action|Adventure|War', 'Action|Crime|Drama|Horror|Thriller', 'Crime|Mystery', 'Adventure|Comedy|Mystery|Romance', 'Adventure|Animation|Children|Comedy|Fantasy|Romance', 'Adventure|War|Western', 'Comedy|Drama|Mystery|Thriller', 'Comedy|Drama|Romance|Western', 'Action|Comedy|Sci-Fi|Thriller', 'Adventure|Documentary|IMAX', 'Animation|Drama|Sci-Fi|IMAX', 'Action|Comedy|Horror|Sci-Fi', 'Comedy|Musical|Sci-Fi', 'Drama|Musical|Mystery', 'Crime|Musical', 'Comedy|Musical|Western', 'Action|Animation|Comedy|Crime|Drama|Romance|Thriller', 'Action|Adventure|Drama|Romance', 'Comedy|Fantasy|Horror|Musical|Thriller', 'Crime|Horror|Mystery', 'Action|Adventure|Drama|Romance|Thriller', 'Action|Comedy|Romance|War', 'Action|Adventure|Comedy|Drama', 'Adventure|Thriller', 'Crime|Drama|Film-Noir|Mystery|Thriller', 'Action|Animation|Sci-Fi', 'Animation|Drama|Fantasy', 'Drama|Fantasy|Mystery|Sci-Fi', 'Drama|Fantasy|Horror|Thriller|War', 'Fantasy|Mystery|Thriller', 'Action|Adventure|Comedy|Drama|Romance|Thriller', 'Mystery|Romance|Sci-Fi|Thriller', 'Adventure|Crime|Drama|Thriller', 'Comedy|Drama|Mystery', 'Animation|Fantasy', 'Drama|Fantasy|Horror|Mystery|Thriller', 'Drama|Fantasy|Mystery|Romance|Thriller', 'Animation|Fantasy|Horror|Sci-Fi', 'Documentary|War', 'Children|Horror|Mystery|Thriller', 'Musical|Western', 'Action|Adventure|Sci-Fi|IMAX', 'Adventure|Animation|Children|Western', 'Adventure|Children|Comedy|Fantasy|Mystery', 'Adventure|Drama|Horror|Mystery|Thriller', 'Comedy|Sci-Fi|Thriller', 'Action|Animation|Children|Comedy', 'Children|Drama|Musical', 'Comedy|Drama|Fantasy|Sci-Fi', 'Action|Adventure|Fantasy|Romance', 'Comedy|Crime|Romance|Thriller', 'Adventure|War', 'Comedy|Crime|Musical|Mystery', 'Adventure|Animation|Fantasy', 'Animation|Comedy|War', 'Action|Adventure|Comedy|Crime|Drama', 'Animation|Drama|War', 'Documentary|Horror', 'Action|Horror|Mystery|Sci-Fi', 'Action|Comedy|Documentary', 'Adventure|Animation|Children|Sci-Fi|IMAX', 'Comedy|Drama|Horror', 'Animation|Children|Drama|Fantasy', 'Comedy|Crime|Drama|Musical', 'Action|Adventure|Animation|Fantasy|Sci-Fi', 'Action|Adventure|Crime|Drama|Thriller', 'Comedy|Crime|Drama|Romance', 'Comedy|Documentary|Musical', 'Action|Animation|Sci-Fi|Thriller', 'Adventure|Children|Comedy|Mystery', 'Mystery|Sci-Fi', 'Adventure|Children|Comedy|Fantasy|Musical', 'Action|Adventure|Animation|Children|Fantasy|Sci-Fi', 'Action|Adventure|Sci-Fi|Thriller|IMAX', 'Action|Drama|Horror|Sci-Fi|Thriller', 'Drama|War|Western', 'Comedy|Crime|Mystery|Romance', 'Comedy|War|Western', 'Action|Adventure|Comedy|Crime|Thriller', 'Action|Fantasy|Sci-Fi', 'Action|Comedy|Thriller', 'Comedy|Crime|Drama|War', 'Adventure|Comedy|Crime|Thriller', 'Action|Adventure|Children|Fantasy', 'Drama|Fantasy|Musical|Romance', 'Animation|Drama|Romance', 'Comedy|Romance|Sci-Fi|Thriller', 'Action|Fantasy|Horror', 'Fantasy|Horror|Sci-Fi|Thriller', 'Comedy|Musical|Romance|Western', 'Drama|Fantasy|Sci-Fi', 'Children|Comedy|Crime|Musical', 'Action|Adventure|Animation|Fantasy', 'Crime|Documentary', 'Adventure|Comedy|Drama|Fantasy|Mystery|Sci-Fi|Thriller', 'Action|Animation|Children|Fantasy', 'Comedy|Mystery|Sci-Fi', 'Adventure|Thriller|Western', 'Comedy|Crime|Drama|Mystery|Romance', 'Action|Crime|Fantasy|Sci-Fi|Thriller', 'Crime|Fantasy|Horror', 'Action|Drama|Horror|Thriller', 'Comedy|Fantasy|Horror|Thriller', 'Action|Drama|Romance|Western', 'Adventure|Animation|Drama|Fantasy|Sci-Fi', 'Animation|Drama|Sci-Fi|War', 'Action|Adventure|Drama|Fantasy', 'Adventure|Drama|Romance|Thriller|War', 'Crime|Drama|Film-Noir|Romance|Thriller', 'Drama|Film-Noir|Mystery', 'Action|Comedy|Crime|Drama|Horror|Thriller', 'Adventure|Documentary', 'Action|Adventure|Children|Comedy|Crime', 'Animation|Comedy|Fantasy|Musical', 'Action|Adventure|Children|Comedy|Mystery', 'Action|Drama|Horror', 'Musical|Romance|Western', 'Action|Drama|Thriller|War', 'Comedy|Crime|Drama|Musical|Mystery|Romance', 'Adventure|Comedy|War', 'Fantasy|Musical|Romance', 'Drama|Thriller|Western', 'Crime|Horror|Sci-Fi', 'Animation|Fantasy|Thriller', 'Children|Comedy|Fantasy|Sci-Fi', 'Mystery', 'Action|Adventure|Animation|Comedy|Crime|Mystery', 'Adventure|Animation|Children|Comedy|Musical|Romance', 'Action|Adventure|Drama|Sci-Fi|Thriller', 'Adventure|Fantasy|IMAX', 'Action|Crime|Horror|Mystery|Thriller', 'Comedy|Fantasy|Thriller', 'Animation|Comedy|Drama|Fantasy|Sci-Fi', 'Comedy|Documentary|Drama', 'Crime|Drama|Film-Noir|Romance', 'Action|Adventure|Drama|Romance|Thriller|Western', 'Crime|Drama|Horror', 'Adventure|Comedy|Fantasy|Musical', 'Adventure|Animation|Drama', 'Comedy|Drama|Fantasy|Mystery', 'Action|Crime|Fantasy', 'Comedy|Drama|Sci-Fi|War', 'Adventure|Fantasy|Sci-Fi', 'Adventure|Drama|Horror|Sci-Fi|Thriller', 'Action|Adventure|Animation|Comedy', 'Action|Adventure|Animation|Children|Comedy', 'Adventure|Animation|Children|Fantasy|IMAX', 'Action|Adventure|Drama|Mystery|Thriller', 'Action|Fantasy|Horror|Thriller', 'Fantasy', 'Crime|Documentary|War', 'Children|Comedy|Musical|Romance', 'Drama|Horror|War', 'Action|Adventure|Comedy|Drama|Romance|War', 'Fantasy|Western', 'Adventure|Comedy|Horror|Romance', 'Action|Adventure|Animation|Children|Comedy|Fantasy', 'Action|Adventure|Children|Crime|Mystery|Thriller', 'Adventure|Children|Fantasy|Sci-Fi', 'Action|Fantasy|Horror|Romance', 'Animation|Fantasy|Mystery', 'Action|Animation|Crime|Drama|Film-Noir|Mystery|Sci-Fi|Thriller', 'Animation|Drama', 'Action|Fantasy|Sci-Fi|Thriller|War', 'Adventure|Animation|Comedy|Fantasy|Romance', 'Drama|Romance|Thriller|War', 'Adventure|Drama|Fantasy|Horror|Sci-Fi', 'Drama|Fantasy|Horror|Mystery|Sci-Fi|Thriller', 'Action|Animation', 'Adventure|Animation|Children|Musical|Romance', 'Action|Documentary|Drama|Thriller', 'Action|Adventure|Comedy|Sci-Fi|Thriller', 'Action|Adventure|Drama|Fantasy|Romance', 'Action|Animation|Drama|Fantasy|Sci-Fi', 'Drama|Fantasy|Romance|Sci-Fi', 'Action|Animation|Crime|Sci-Fi|Thriller', 'Drama|Horror|Mystery|Romance|Thriller', 'Action|Comedy|Crime|Fantasy|Thriller', 'Crime|Drama|Mystery|Thriller|War', 'Comedy|Drama|Romance|Sci-Fi', 'Action|Animation|Horror', 'Comedy|Crime|Horror|Mystery|Thriller', 'Comedy|Fantasy|Mystery|Sci-Fi', 'Comedy|Crime|Drama|Sci-Fi|Thriller', 'Action|Comedy|Horror|Musical', 'Drama|Sci-Fi|War', 'Action|Animation|Drama|Sci-Fi', 'Action|Comedy|Horror|Sci-Fi|Thriller|Western', 'Action|Comedy|Drama|War', 'Drama|Mystery|Romance|War', 'Action|Animation|Drama|Sci-Fi|Thriller', 'Children|Comedy|Crime|Drama|Fantasy', 'Action|Horror|Sci-Fi|War', 'Animation|Drama|Mystery|Sci-Fi|Thriller', 'Action|Drama|Fantasy|Sci-Fi', 'Comedy|Crime|Drama|Horror|Mystery', 'Adventure|Children|Comedy|Fantasy|IMAX', 'Animation|Documentary', 'Drama|Horror|Mystery|Sci-Fi|Thriller', 'Animation|Fantasy|Sci-Fi|War', 'Action|Animation|Fantasy|Sci-Fi', 'Action|Adventure|Crime|Drama', 'Action|Adventure|Comedy|Crime|Romance|Thriller', 'Action|Adventure|Drama|Romance|War', 'Adventure|Animation|Fantasy|Romance', 'Action|Fantasy|Horror|Mystery|Sci-Fi|Thriller', 'Adventure|Comedy|Crime|Drama|Mystery|Thriller', 'Comedy|Crime|Drama|Mystery', 'Comedy|Crime|Musical', 'Adventure|Animation|Children|Comedy|Fantasy|Sci-Fi|IMAX', 'Adventure|Comedy|Documentary', 'Comedy|Crime|Drama|Western', 'Adventure|Drama|War|Western', 'Animation|Fantasy|Sci-Fi|Thriller', 'Action|Crime|Film-Noir|Mystery|Thriller', 'Animation|Comedy|Sci-Fi', 'Animation|Fantasy|Horror', 'Children|Documentary', 'Action|Crime|IMAX', 'Adventure|Animation|Children|Comedy|Fantasy|War', 'Action|Adventure|Horror|Mystery|Sci-Fi|Thriller', 'Action|Crime|Drama|Thriller|War', 'Fantasy|Mystery|Romance|Thriller', 'Crime|Drama|Horror|Thriller', 'Animation|Comedy|Fantasy|Musical|Romance', 'Adventure|Children|Drama|Fantasy', 'Action|Horror|Mystery|Thriller', 'Adventure|Comedy|Fantasy|Horror', 'Action|Adventure|Animation|Children|Comedy|Sci-Fi', 'Adventure|Drama|Horror|Thriller', 'Adventure|Fantasy|Thriller|IMAX', 'Crime|Drama|Thriller|War', 'Action|Adventure|Comedy|Drama|Romance', 'Animation|Drama|Romance|Sci-Fi', 'Fantasy|Mystery|Western', 'Adventure|Comedy|Drama|Fantasy', 'Action|Comedy|Crime|Western', 'Action|Crime|Drama|Horror', 'Action|Fantasy|Sci-Fi|Thriller', 'Action|Drama|Fantasy|Horror|Mystery|Sci-Fi|Thriller', 'Action|Animation|Children|Sci-Fi', 'Action|Sci-Fi|Thriller|IMAX', 'Comedy|Fantasy|Horror|Sci-Fi', 'Action|Crime|Mystery', 'Crime|Drama|Film-Noir|Mystery', 'Action|Animation|Film-Noir|Sci-Fi|Thriller', 'Action|Adventure|Thriller|IMAX', 'Adventure|Comedy|Drama|Fantasy|Romance', 'Children|Comedy|Drama|Musical|Romance', 'Comedy|Documentary|Romance', 'Animation|Children|Fantasy|Mystery', 'Comedy|Fantasy|Mystery', 'Action|Comedy|Fantasy|IMAX', 'Adventure|Animation|Children|Comedy|Fantasy|IMAX', 'Adventure|Animation|Comedy|Fantasy|Romance|Sci-Fi', 'Crime|Drama|Musical', 'Adventure|Comedy|Sci-Fi|Thriller', 'Adventure|Animation|Children|Comedy|IMAX', 'Documentary|Drama|War', 'Crime|Western', 'Action|Adventure|Crime|Drama|Thriller|War', 'Children|Comedy|Drama|Fantasy', 'Drama|Fantasy|Horror|Romance', 'Action|Fantasy|Thriller', 'Action|Comedy|Crime|Mystery', 'Action|Comedy|Drama|Horror|Thriller', 'Action|Fantasy|War|IMAX', 'Comedy|Drama|Horror|Sci-Fi|Thriller', 'Drama|Fantasy|Mystery|Thriller', 'Action|Crime|Horror|Sci-Fi|Thriller', 'Adventure|Drama|Sci-Fi|Thriller', 'Action|Adventure|Animation|Comedy|Fantasy|Mystery|Sci-Fi', 'Crime|Drama|Fantasy|Mystery|Thriller', 'Action|Crime|Horror|Thriller', 'Animation|Mystery|Sci-Fi', 'Adventure|Crime|Thriller', 'Action|Adventure|Crime|Horror|Thriller', 'Adventure|Drama|Fantasy|IMAX', 'Adventure|Comedy|Fantasy|Romance', 'Action|Adventure|Fantasy|War', 'Action|Crime|Drama|Western', 'Action|Adventure|Comedy|Drama|Thriller', 'Action|Adventure|Animation|Crime|Fantasy', 'Action|Adventure|Animation|Fantasy|IMAX', 'Comedy|Drama|Sci-Fi|Thriller', 'Adventure|Animation|Children|Comedy|Fantasy|Musical|Romance', 'Action|Horror|Sci-Fi|Thriller|IMAX', 'Drama|Horror|Musical|Thriller', 'Action|Mystery|Sci-Fi|Thriller', 'Adventure|Animation|Drama|Horror', 'Animation|Comedy|Drama|Romance|Sci-Fi', 'Crime|Sci-Fi', 'Adventure|Children|Drama|Fantasy|IMAX', 'Adventure|Romance|Thriller', 'Crime|Drama|War', 'Action|Crime|Drama|IMAX', 'Documentary|Musical|IMAX', 'Action|Children|Sci-Fi|IMAX', 'Action|Animation|Children|Comedy|IMAX', 'Comedy|Crime|Drama|Horror', 'Action|Comedy|Drama|Thriller', 'Adventure|Animation|Children|Romance|Sci-Fi', 'Action|Adventure|Comedy|Crime|Fantasy', 'Action|Animation|Comedy|Romance|Sci-Fi', 'Children|Comedy|Drama|Mystery', 'Animation|Children|Comedy|Fantasy|Musical', 'Action|Adventure|Horror|Sci-Fi|Thriller', 'Adventure|Children|Comedy|Romance|Sci-Fi', 'Action|Comedy|Fantasy|Horror|Thriller', 'Action|Drama|Mystery|Sci-Fi|Thriller|IMAX', 'Adventure|Fantasy|Thriller', 'Action|Animation|Crime', 'Adventure|Comedy|Drama|Romance', 'Animation|Documentary|Drama|War', 'Action|Comedy|Fantasy|Thriller', 'Action|Animation|Comedy|Horror', 'Action|Crime|Thriller|IMAX', 'Animation|Comedy|Fantasy|Sci-Fi', 'Action|Adventure|Animation|Comedy|Fantasy|Sci-Fi', 'Action|Adventure|Animation|Children|Comedy|IMAX', 'Children|Fantasy|Musical|Romance', 'Drama|Fantasy|Romance|Thriller', 'Adventure|Animation|Comedy|Fantasy', 'Drama|Sci-Fi|Thriller|IMAX', 'Action|Adventure|Animation', 'Action|Animation|Comedy|Sci-Fi', 'Animation', 'Adventure|Comedy|Mystery', 'Comedy|Drama|Musical|Sci-Fi', 'Comedy|Crime|Horror|Thriller', 'Action|Drama|Mystery|Sci-Fi|Thriller', 'Animation|Sci-Fi|IMAX', 'Drama|Fantasy|Sci-Fi|Thriller', 'Action|Comedy|IMAX', 'Adventure|Fantasy|Musical|Romance', 'Action|Animation|Mystery|Sci-Fi', 'Action|Adventure|Animation|Drama', 'Action|Adventure|Comedy|Horror', 'Action|Adventure|Animation|Children|Comedy|Romance', 'Action|Adventure|Animation|Horror', 'Adventure|Fantasy|Mystery|Romance|IMAX', 'Adventure|Children|Fantasy|Sci-Fi|Thriller', 'Comedy|Documentary|Drama|Romance', 'Adventure|Animation|Sci-Fi', 'Animation|Children|Fantasy|IMAX', 'Action|Animation|Comedy|Horror|Thriller', 'Animation|Comedy|Drama', 'Action|Adventure|Drama|Fantasy|Romance|Sci-Fi|Thriller', 'Action|Comedy|Drama|Romance', 'Adventure|Animation|Children|Comedy|Crime', 'Animation|Children|Drama|Fantasy|IMAX', 'Animation|Children|Comedy|Fantasy', 'Drama|Fantasy|Horror|Romance|Thriller', 'Action|Adventure|Animation|Comedy|Thriller', 'Crime|Drama|Fantasy|Horror|Thriller', 'Children|Drama|Romance', 'Horror|Thriller|Western', 'Comedy|Musical|Sci-Fi|Western', 'Action|Adventure|Fantasy|Romance|IMAX', 'Fantasy|Romance|Thriller|IMAX', 'Action|Crime|Drama|Mystery|Sci-Fi|Thriller|IMAX', 'Action|Children|Drama', 'Action|Comedy|Fantasy|Musical|Romance', 'Documentary|Drama|Mystery', 'Adventure|Animation|Fantasy|IMAX', 'Documentary|Mystery', 'Action|Adventure|Comedy|Crime|Drama|Film-Noir|Horror|Mystery|Thriller|Western', 'Horror|IMAX', 'Action|Animation|Children|Comedy|Sci-Fi|IMAX', 'Action|Adventure|Fantasy|IMAX', 'Animation|Children|Comedy|Fantasy|Musical|Romance|IMAX', 'Crime|Romance', 'Adventure|Documentary|Western', 'Action|Comedy|Crime|Fantasy|Thriller|IMAX', 'Action|Fantasy|Western', 'Action|Sci-Fi|Thriller|Western|IMAX', 'Action|Adventure|Animation|Children|Comedy|Western', 'Romance|Sci-Fi|Thriller', 'Adventure|Animation|Comedy|Sci-Fi', 'Action|Adventure|Animation|Children|Comedy|Sci-Fi|IMAX', 'Action|Fantasy|Thriller|IMAX', 'Animation|Children|Comedy|Horror', 'Action|Adventure|Drama|Fantasy|IMAX', 'Action|Crime|Drama|Thriller|IMAX', 'Drama|Mystery|War', 'Action|Adventure|Sci-Fi|Thriller|War', 'Mystery|Sci-Fi|Thriller|IMAX', 'Action|Adventure|Sci-Fi|War|IMAX', 'Action|Adventure|Drama|Fantasy|Mystery|IMAX', 'Horror|Thriller|IMAX', 'Sci-Fi|Thriller|IMAX', 'Action|Drama|Sci-Fi|IMAX', 'Crime|Sci-Fi|Thriller', 'Action|Drama|Mystery|Thriller', 'Adventure|Animation|Comedy|Fantasy|IMAX', 'Action|Animation|Mystery|IMAX', 'Children|Drama|Mystery', 'Action|Drama|Fantasy', 'Animation|Children|Comedy|IMAX', 'Animation|Children|Comedy|Drama', 'Action|Crime|Film-Noir', 'Action|Adventure|Crime|IMAX', 'Action|Adventure|Drama|Thriller|IMAX', 'Action|Adventure|Comedy|Crime|Mystery|Thriller', 'Action|Fantasy|Horror|IMAX', 'Crime|Drama|Fantasy', 'Action|Adventure|Comedy|Sci-Fi|IMAX', 'Action|Adventure|Horror', 'Crime|Thriller|Western', 'Animation|Fantasy|Musical|IMAX', 'Action|Animation|Fantasy', 'Comedy|Horror|IMAX', 'Action|Comedy|Sci-Fi|IMAX', 'Action|Horror|Sci-Fi|IMAX', 'Action|Adventure|Animation|Children', 'Action|Adventure|Animation|Sci-Fi|Thriller', 'Comedy|Drama|Musical|IMAX', 'Children|Musical|Mystery', 'Drama|Fantasy|Musical|Mystery|Sci-Fi', 'Animation|Comedy|Horror|IMAX', 'Drama|Sci-Fi|IMAX', 'Action|Adventure|Comedy|Documentary|Fantasy', 'Action|Adventure|Crime', 'Children|Crime|Drama', 'Adventure|Drama|Fantasy|Romance|IMAX', 'Animation|Comedy|Romance', 'Drama|Musical|Romance|IMAX', 'Adventure|Comedy|Fantasy|Romance|IMAX', 'Animation|Comedy|Horror|Musical', 'Action|Animation|Comedy', 'Children|Horror|Sci-Fi', 'Action|Drama|IMAX', 'Documentary|Fantasy', 'Action|Adventure|Fantasy|Sci-Fi|IMAX', 'Action|Drama|Horror|IMAX', 'Action|Drama|Thriller|IMAX', 'Action|Adventure|Western|IMAX', 'Drama|Fantasy|Thriller|War', 'Action|IMAX', 'Action|Sci-Fi|IMAX', 'Adventure|Comedy|Musical|Sci-Fi', 'Adventure|Drama|Thriller|IMAX', 'Children|Drama|War', 'Adventure|Animation|Comedy|Fantasy|Musical|Romance', 'Action|Animation|Drama', 'Drama|Horror|Romance', 'Action|Animation|Fantasy|IMAX', 'Adventure|Romance|Sci-Fi|IMAX', 'Adventure|Animation|Children|Comedy|Drama|Romance', 'Action|Fantasy|Sci-Fi|IMAX', 'Action|Crime|Sci-Fi|IMAX', 'Animation|Comedy|Drama|Romance', 'Sci-Fi|IMAX', 'Animation|Romance', 'Action|Drama|War|IMAX', 'Action|Animation|Children|Comedy|Musical', 'Action|Adventure|Children|IMAX', 'Action|Animation|Children', 'Animation|Drama|Fantasy|Mystery', 'Action|Animation|Crime|Thriller', 'Documentary|Drama|Musical', '(no genres listed)', 'Adventure|Animation', 'Adventure|Animation|Romance', 'Animation|Children|Comedy|Musical|Sci-Fi', 'Action|Adventure|Comedy|Drama|Fantasy|Thriller', 'Documentary|Drama|Thriller', 'Adventure|Mystery|Thriller', 'Horror|Romance|Thriller', 'Animation|Children|Mystery', 'Comedy|Drama|Fantasy|Mystery|Romance', 'Crime|Drama|Horror|Mystery', 'Adventure|Romance|Sci-Fi', 'Horror|Sci-Fi|Western', 'Action|Adventure|Children|Comedy|Sci-Fi', 'Action|Adventure|Animation|Comedy|Sci-Fi', 'Horror|Romance|Sci-Fi', 'Action|Adventure|Children|Mystery|Sci-Fi', 'Comedy|Crime|Sci-Fi', 'Action|Comedy|Fantasy|Sci-Fi', 'Adventure|Animation|Children|Comedy|Drama|Fantasy', 'Adventure|Children|Comedy|Sci-Fi', 'Action|Animation|Crime|Sci-Fi', 'Action|Adventure|Romance|Sci-Fi', 'Action|Crime|Drama|Sci-Fi', 'Animation|Children|Comedy|Drama|Romance', 'Action|Fantasy|Mystery', 'Comedy|Horror|Mystery', 'Comedy|Crime|Fantasy', 'Animation|Horror|Mystery', 'Comedy|Romance|Western', 'Adventure|Drama|Fantasy|Sci-Fi', 'Adventure|Children|Drama|Sci-Fi', 'Adventure|Children|Comedy|Drama|Fantasy|Sci-Fi', 'Animation|Fantasy|Horror|Mystery', 'Adventure|Animation|Fantasy|Horror|Sci-Fi', 'Action|Animation|Crime|Drama', 'Action|Adventure|Animation|Drama|Fantasy|Sci-Fi', 'Action|Animation|Mystery', 'Animation|Drama|Sci-Fi', 'Animation|Drama|Fantasy|Romance', 'Action|Adventure|Comedy|Fantasy|Sci-Fi|Thriller', 'Action|Adventure|Fantasy|Horror|Thriller', 'Comedy|Sci-Fi|War', 'Comedy|Mystery|Romance|Thriller', 'Fantasy|Horror|Sci-Fi|Western', 'Animation|Crime|Drama', 'Adventure|Mystery|Sci-Fi|Thriller', 'Action|Comedy|Crime|Horror', 'Action|Adventure|Children|Sci-Fi', 'Action|Adventure|Comedy|Fantasy|Sci-Fi', 'Action|Animation|Comedy|Fantasy'], dtype=object)
<class 'numpy.ndarray'>
In [19]:
genres_list = []
for genre in genres :
temp = list(genre.split("|"))
for x in temp :
if x not in genres_list:
genres_list.append(x)
print(genres_list) # |로 나누어 영화 장르의 리스트를 만듦.
['Adventure', 'Animation', 'Children', 'Comedy', 'Fantasy', 'Romance', 'Drama', 'Action', 'Crime', 'Thriller', 'Horror', 'Mystery', 'Sci-Fi', 'War', 'Musical', 'Documentary', 'IMAX', 'Western', 'Film-Noir', '(no genres listed)']
In [20]:
movie_info # 위에서 만든 영화별 평점평균을 포함한 데이터프레임
Out[20]:
movieId | title | genres | rating | |
---|---|---|---|---|
0 | 1 | Toy Story (1995) | Adventure|Animation|Children|Comedy|Fantasy | 3.920930 |
1 | 2 | Jumanji (1995) | Adventure|Children|Fantasy | 3.431818 |
2 | 3 | Grumpier Old Men (1995) | Comedy|Romance | 3.259615 |
3 | 4 | Waiting to Exhale (1995) | Comedy|Drama|Romance | 2.357143 |
4 | 5 | Father of the Bride Part II (1995) | Comedy | 3.071429 |
... | ... | ... | ... | ... |
9737 | 193581 | Black Butler: Book of the Atlantic (2017) | Action|Animation|Comedy|Fantasy | 4.000000 |
9738 | 193583 | No Game No Life: Zero (2017) | Animation|Comedy|Fantasy | 3.500000 |
9739 | 193585 | Flint (2017) | Drama | 3.500000 |
9740 | 193587 | Bungo Stray Dogs: Dead Apple (2018) | Action|Animation | 3.500000 |
9741 | 193609 | Andrew Dice Clay: Dice Rules (1991) | Comedy | 4.000000 |
9724 rows × 4 columns
In [21]:
genres_rate = []
for genre in genres_list :
rate = movie_info[movie_info['genres'].str.contains(genre)]['rating'].mean() # genres_list를 이용하여 장르별 평점평균을 구하고
genres_rate.append(rate) # 구한 평점평균을 새로운 리스트에 저장함.
print(genres_rate)
[3.215229808197848, 3.497119150128774, 3.1076903605293134, 3.181716291867792, 3.218843125330386, 3.3648703259133232, 3.4209053471055375, 3.0944984491955134, 3.301843831031174, 3.1561160994630257, 2.9189646997100778, 3.3303636065388313, 3.1026374537884083, 3.5716549384975464, 3.2963709618468595, 3.7816816901269963, 3.3119963710928855, 3.3833889087601268, 3.6704709375189575, 3.3711484593837535]
C:\Users\Administrator\AppData\Local\Temp\ipykernel_17708\3339914342.py:3: UserWarning: This pattern is interpreted as a regular expression, and has match groups. To actually get the groups, use str.extract. rate = movie_info[movie_info['genres'].str.contains(genre)]['rating'].mean() # genres_list를 이용하여 장르별 평점평균을 구하고
다른 표현방식(정규식, str.extract...)을 사용하라는 경고
In [22]:
genres_rate_ranking = pd.Series(genres_rate,
index=genres_list) # genres_rate는 genres_list와 동일한 순서로 생성되었으므로 list를 index로 하는 Series를 만듦.
top_genres = genres_rate_ranking[genres_rate_ranking==genres_rate_ranking.max()] # Series에서 가장 높은 rating에 해당하는 장르를 추출
top_genres = top_genres.sort_index() # 제목 순 정렬
top_genres
Out[22]:
Documentary 3.781682 dtype: float64
반응형
'Programming > Pandas' 카테고리의 다른 글
[pandas] 기후통계분석 데이터를 이용한 EDA 실습 (0) | 2022.03.22 |
---|---|
[pandas] read_csv 'utf-8' error (1) | 2022.03.21 |
[pandas] DataFrame Merge, Mapping, Grouping (0) | 2022.03.21 |
[pandas] DataFrame Indexing & Slicing (0) | 2022.03.17 |
[pandas] 여러가지 resource를 이용하여 DataFrame 생성하기 (csv, sql, api, json) (0) | 2022.03.17 |