In [ ]:
import pandas as pd
import numpy as np
import graphlab

In [ ]:
df_actor = pd.read_csv('../data/movie_actor_long_example')
df_actor.shape

In [ ]:
df_movie = pd.read_csv('Data/movies.csv')
with open('Data/keywords_clean.list', 'r') as f:
    data = f.read().split('\n')
data_np = np.array(data)
movie_title = df_movie.title

In [ ]:
movie_keyword = [s for s in data_np if any(xs in s for xs in movie_title[0:20])]

In [ ]:
import csv
with open('data/new_movie_keywords_example', 'wb') as myfile:
    wr = csv.writer(myfile, quoting=csv.QUOTE_ALL)
    wr.writerow(movie_keyword)

In [ ]:
df_key = pd.DataFrame(movie_keyword)

In [ ]:
#add columns to name, year and key word
df_key['name'] = [x.split('\t')[0] for x in df_key[0]]
df_key['keyword'] = [x.split('\t')[-1] for x in df_key[0]]
df_key['year'] = [x.split('(')[1][:-1] for x in df_key['name']]

In [ ]:
# movie_actors = [s for s in actors_100 if any(xs in s for xs in movie_title[0:20])]

In [ ]:
from load_imdb_data import load_imdb_data

In [ ]:
cd Code

In [ ]:
filename = '../data/imdb_edges.tsv'
actors, movies = load_imdb_data(filename)

In [ ]:
movie_actors = [xs,s.values for s in movies if any(s in xs for xs in df_key['name'])]

In [ ]:
# df_key['actors'] = [s.value for s in movies if any(s in x for x in )]
movie_actors = [v for k,v in movies.iteritems() if any(k in xs for xs in movie_title[0:20])]

In [ ]:
%%timeit
m_col = []
a_col = []
for movie_t in movie_title[0:1000]:
    for k,v in movies.iteritems():
        if k in movie_t:
            for names in v:
                m_col.append(movie_t)
                a_col.append(names)
movie_actor_long = pd.concat([pd.Series(m_col), pd.Series(a_col)], axis=1)
movie_actor_long.columns = ['title','actor']
movie_actor_long.to_csv('../Data/movie_actor_long_example',index = False)

In [ ]:
%%timeit
#Make the file into pandas dataframe with movie and actor in long form
m_col = []
a_col = []
for movie_t in movie_title:
    for k,v in movies.iteritems():
        if k in movie_t:
            for names in v:
                m_col.append(movie_t)
                a_col.append(names)
movie_actor_long = pd.concat([pd.Series(m_col), pd.Series(a_col)], axis=1)
movie_actor_long.columns = ['title','actor']
movie_actor_long.to_csv('../Data/movie_actor_long_example',index = False)

In [ ]:
i = 0
for x in xrange(len(movie_title)/100):
    first = x * 100
    last = (1+x) * 100
    movie_keyword = [s for s in data_np if any(xs in s for xs in movie_title[first:last])]
    with open('../Data/new_movie_keywords_example%s' %(str(x+10)), 'wb') as myfile:
        wr = csv.writer(myfile, quoting=csv.QUOTE_ALL)
        wr.writerow(movie_keyword)
    print x*100, 'out of ',len(movie_title), x*100/float(len(movie_title))

In [ ]:
df_actor['count'] = 1
df_actor_matrix = df_actor.reset_index().pivot_table(values='count', index='title', columns='actor', aggfunc='mean')

In [ ]:
df_actor_matrix

In [ ]:
df_key = pd.read_csv('df_key_long')
df_key_matrix = df_key.reset_index().pivot_table(values='count', index='title', columns='keyword', aggfunc='mean')

In [ ]:
df_key_matrix.to_csv('df_key_matrix')

In [ ]:
df_actor_matrix.to_csv('df_actor_matrix')

In [ ]:
df_keyword = df_key[['title','keyword','count']]
keyword_sf = graphlab.SFrame(df_keyword)
m_als = graphlab.recommender.factorization_recommender.create(keyword_sf, num_factors=20,user_id = 'keyword', item_id = 'title', target = 'count', solver='als')
m_als.coefficients

In [ ]:
m_als.coefficients

In [ ]:
from sklearn.decomposition import TruncatedSVD
svd_key = TruncatedSVD(n_components=100, random_state=42)
svd_key.fit(df_key_matrix)

In [ ]:
from sklearn.ensemble import RandomForestClassifier

In [ ]:
rf = RandomForestClassifier()

In [ ]:
from sklearn.neighbors import KNeighborsRegressor
from sklearn.cluster import KMeans

In [ ]:
# df_key_mat0 =df_key_matrix.fillna(0)
knn = KNeighborsRegressor(n_neighbors=2)
kmeans = KMeans(n_clusters=2)
# knn.fit(df_key_mat0.as_matrix())

In [ ]:
kmeans.fit_predict(df_key_mat0.as_matrix())
array_features = np.array(df_key_mat0.columns.values())
for i, cluster in enumerate(kmeans.cluster_centers_):
    idx = cluster.argsort()[0:10]
    print i, array_features[idx]

In [ ]:
import numpy as np
import pandas as pd
from scipy import sparse
import csv
# import graphlab
from sklearn.neighbors import KNeighborsRegressor
from sklearn.cluster import KMeans

df_key = pd.read_csv('../data/df_key_long')
df_actor = pd.read_csv('../data/movie_actor_long_example')
df_actor['count'] = 1
df_key_matrix = pd.read_csv('../data/df_key_matrix')
df_actor_matrix = pd.read_csv('../data/df_actor_matrix')

#Get the df keyword only
df_keyword = df_key[['title','keyword','count']]
# keyword_sf = graphlab.SFrame(df_keyword)
# m_als = graphlab.recommender.factorization_recommender.create(keyword_sf, user_id = 'keyword', item_id = 'title', target = 'count', solver='als')

#Use Knn to get cluters for 2 groups. And try using random forest to get highest feature importance
# knn = KNeighborsRegressor(n_neighbors=2)
# kmeans = KMeans(n_clusters=2)
# df_key_mat0 =df_key_matrix.fillna(0)
# kmeans.fit_predict(df_key_mat0.as_matrix())
# array_features = np.array(df_key_mat0.columns.values())
# for i, cluster in enumerate(kmeans.cluster_centers_):
#     idx = cluster.argsort()[0:10]
#     print i, array_features[idx]

That is the start from Tuesday!!!


In [1]:
import numpy as np
import pandas as pd
from scipy import sparse
import csv

In [4]:
df_key = pd.read_csv('../data/df_key_long')


/Users/zoesh/anaconda/lib/python2.7/site-packages/IPython/core/interactiveshell.py:2902: DtypeWarning: Columns (4) have mixed types. Specify dtype option on import or set low_memory=False.
  interactivity=interactivity, compiler=compiler, result=result)

In [ ]:
df_key_matrix = pd.read_csv('../data/df_key_matrix')

In [5]:
df_key_matrix = df_key.reset_index().pivot_table(values='count', index='title', columns='keyword', aggfunc='mean')

In [7]:
df_key_mat_ex = df_key_matrix[df_key_matrix.columns[df_key_matrix.sum()>5]]

In [24]:
df_key_mat_ex.fillna(0,inplace = True)


/Users/zoesh/anaconda/lib/python2.7/site-packages/pandas/core/frame.py:2705: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  **kwargs)

In [9]:
df_key_mat_ex.shape


Out[9]:
(20939, 19718)

In [10]:
# df_actor = pd.read_csv('../data/movie_actor_long_example')
# df_actor['count'] = 1
# df_actor_matrix = df_actor.reset_index().pivot_table(values='count', index='title', columns='keyword', aggfunc='mean')
df_key_matrix['year'] = [x.split('(')[1][:-1] for x in df_key_matrix.index.values]
df_year = pd.get_dummies(df_key_matrix['year'])

In [15]:
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris

In [25]:
from sklearn.tree import DecisionTreeClassifier
clf = DecisionTreeClassifier(max_depth = 20)
clf.fit(df_key_mat_ex.values,np.array(df_key_mat_ex.index))


Out[25]:
DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=20,
            max_features=None, max_leaf_nodes=None, min_samples_leaf=1,
            min_samples_split=2, min_weight_fraction_leaf=0.0,
            presort=False, random_state=None, splitter='best')

In [29]:
from IPython.display import Image  
from sklearn.externals.six import StringIO
from sklearn import tree
with open("../data/movie.dot", 'w') as f:
    f = tree.export_graphviz(clf, out_file=f)
# dot_data = StringIO()  
# DecisionTreeClassifier.tree.export_graphviz(clf, out_file=dot_data,  
#                          feature_names=iris.feature_names,  
#                          class_names=iris.target_names,  
#                          filled=True, rounded=True,  
#                          special_characters=True)  
# >>> graph = pydot.graph_from_dot_data(dot_data.getvalue())  
# >>> Image(graph.create_png())

In [28]:
import os
os.unlink("../data/movie.dot")

In [30]:
clf.score(df_key_mat_ex.values,np.array(df_key_mat_ex.index))


Out[30]:
0.012130474234681695

In [32]:
clf40 = DecisionTreeClassifier(max_depth = 140)
clf40.fit(df_key_mat_ex.values,np.array(df_key_mat_ex.index))
clf40.score(df_key_mat_ex.values,np.array(df_key_mat_ex.index))


Out[32]:
0.1621853956731458

In [57]:
df = df_key_mat_ex[df_key_mat_ex.sum(axis = 1) > 5]

In [60]:
clf40 = DecisionTreeClassifier(max_depth = 20)
clf40.fit(df.values,np.array(df.index))
clf40.score(df.values,np.array(df.index))


Out[60]:
0.016508254127063533

In [67]:
yr_cnt = Counter(df_key_matrix['year']).most_common()

In [93]:
year_list = [i[0] for i in yr_cnt if i[1]>5]

In [2]:
import numpy as np
import pandas as pd
from scipy import sparse
import csv
# import graphlab
from sklearn.neighbors import KNeighborsRegressor
from sklearn.cluster import KMeans
import os
from sklearn.tree import DecisionTreeClassifier
from IPython.display import Image  
from sklearn.externals.six import StringIO
from sklearn import tree
from collections import Counter

In [ ]:
df_key = pd.read_csv('../data/df_key_long',dtype={'title': 'str','keyword': 'S20','count':'int'})

In [21]:
df_key_matrix = df_key.reset_index().pivot_table(values='count', index='title', columns='keyword', aggfunc='mean')
df_key_matrix['year'] = [x.split('(')[1][:-1] for x in df_key_matrix.index.values]
#Better to use this one!
yr_cnt = Counter(df_key_matrix['year']).most_common()
year_list = [i[0] for i in yr_cnt if i[1]>5]
df_key_matrix = df_key_matrix[df_key_matrix['year'].isin(year_list)]
df_key_matrix['year'] = df_key_matrix['year'].astype(int)
df_key_mat_ex = df_key_matrix[df_key_matrix.columns[df_key_matrix.sum()>5]].fillna(0)

# list_of_values = [3,6]

# y = df[df['A'] in list_of_values]


---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-21-dd096b210c93> in <module>()
      7 df_key_matrix['year'] = df_key_matrix['year'].astype(int)
      8 df_key_mat_ex = df_key_matrix[df_key_matrix.columns[df_key_matrix.sum()>5]].fillna(0)
----> 9 df = df_key_mat_ex[df_key_mat_ex[df_key_matrix.columns != 'year'].sum(axis = 1) > 5]
     10 # list_of_values = [3,6]
     11 

/Users/zoesh/anaconda/lib/python2.7/site-packages/pandas/core/frame.pyc in __getitem__(self, key)
   1961         if isinstance(key, (Series, np.ndarray, Index, list)):
   1962             # either boolean or fancy integer index
-> 1963             return self._getitem_array(key)
   1964         elif isinstance(key, DataFrame):
   1965             return self._getitem_frame(key)

/Users/zoesh/anaconda/lib/python2.7/site-packages/pandas/core/frame.pyc in _getitem_array(self, key)
   1998             elif len(key) != len(self.index):
   1999                 raise ValueError('Item wrong length %d instead of %d.' %
-> 2000                                  (len(key), len(self.index)))
   2001             # check_bool_indexer will throw exception if Series key cannot
   2002             # be reindexed to match DataFrame rows

ValueError: Item wrong length 81206 instead of 20874.

In [53]:
test = df.pop('year')

In [59]:
df = df[df.sum(axis = 1) > 5]

In [65]:
df = df.join(test)

In [99]:
# df['after2000'] = (df.year>2000).astype(int)
clf = DecisionTreeClassifier('entropy',max_depth = 20)
clf.fit(df.values,np.array(df.index))
clf.score(df.values,np.array(df.index))


Out[99]:
0.87592430129088861

In [101]:
with open("../data/movie4.dot", 'w') as f:
    f = tree.export_graphviz(clf, out_file=f)

In [105]:
from sklearn.externals import joblib
joblib.dump(clf, 'my_movie_model.pkl')
# >>> from sklearn.externals import joblib
# >>> model_clone = joblib.load('my_movie.model.pkl')


Out[105]:
['my_movie_model.pkl',
 'my_movie_model.pkl_01.npy',
 'my_movie_model.pkl_02.npy',
 'my_movie_model.pkl_03.npy',
 'my_movie_model.pkl_04.npy']

In [1]:
import pandas as pd
import numpy as np
import csv
# import graphlab
import os
from sklearn.tree import DecisionTreeClassifier
from sklearn.externals import joblib
# class MovieCleanData(object):

#Need to clean up the list before data preprocessing.
def movie_keyword(keyword_file = '../data/keywords_clean.list', pickle_path = '../data/df_key'):
	df_key = pd.read_csv(keyword_file, delimiter='\n',header = None)
	df_key['Movie'] = [df_key[0][i].split('\t')[0] for i in xrange(df_key.shape[0])]
	df_key['Keyword'] = [df_key[0][i].split('\t')[-1] for i in xrange(df_key.shape[0])]
	# df_key.to_pickle(pickle_path)
	return df_key

#If the dataframe has error, need to cleanup the list file manually.
#Return a pivot dataframe with 27 movie genres. 
def movie_genres(genres_file = '../data/genres.list',pickle_path = '../data/df_genres_pivot'):
	df_genres = pd.read_csv(genres_file,delimiter= '\t', dtype = 'str', header = None)
	df_genres['Genres'] = pd.concat([df_genres[6].dropna(),df_genres[5].dropna(),\
							df_genres[4].dropna(),df_genres[3].dropna(),df_genres[2].dropna(),\
							df_genres[1].dropna()]).reindex_like(df_genres)
	df_genres.drop([1,2,3,4,5,6],axis = 1,inplace = True)
	df_genres.columns = ['idx','Genres']
	df_genres['cnt'] = 1
	df_genres_pivot = df_genres.pivot_table(values = 'cnt', index = 'idx', columns = 'Genres')
	# df_genres_pivot.to_pickle(pickle_path)
	return df_genres_pivot

#The list file includes votes and rates for each movie; need to clean up the data manually.
#Return DafaFrame with vote number greater 10000.
def movie_rating(rating_file = '../data/ratings.list', min_vote_cnt = 10000):
	df_rating = pd.read_csv(rating_file, delimiter='\t', dtype='unicode')
	df_rating['Votes'] =  [int([i for i in df_rating.loc[j][0].split(' ') if i != ''][1]) \
							for j in xrange(df_rating.shape[0])]
	df_rating['Movie'] = [df_rating['New  Distribution  Votes  Rank  Title'][i][32:] \
							for i in xrange(len(df_rating))]

	#Exclude the tv dramas in dataframe.
	df_tv = df_rating[df_rating.Movie.str.startswith('"')]
	df_movie_rating = df_rating.drop(df_tv.index)
	df_popular_movie = df_movie_rating[df_movie_rating.Votes > min_vote_cnt]
	l = df_popular_movie.Movie
	df_popular_movie.Movie = [i if i[0] != ' ' else i[1:] for i in l]
	df_popular_movie = df_popular_movie.set_index(df_popular_movie.Movie)
	# df_popular_movie.to_pickle('../data/df_popular_movie_10000')
	return df_popular_movie

def movie_genres_rating(df_movie_genres, df_movie_rating): 
	df_gen_vote = df_movie_rating.join(df_movie_genres)
	df_gen_vote.drop(['New  Distribution  Votes  Rank  Title','Movie','_ Drama<>Mystery<>crime_'],axis = 1,inplace=True)
	# df_gen_vote.to_pickle('../data/df_gen_vote')
	return df_gen_vote
	
def movie_force_data(df_key, df_gen_vote, number_keywords = 100):
	df_clean_long = df_key.set_index(df_key.Movie).ix[df_gen_vote.index]
	df = df_clean_long.ix[df_gen_vote.index[0]][:number_keywords]
	for movie in df_gen_vote.index[1:]:
		df = pd.concat([df,df_clean_long.ix[movie][:number_keywords]],axis =0)
	df['count'] = 1
	df100 = df[['Movie','Keyword','count']]
	df100 = df100.pivot_table(values='count', index='Movie', columns='Keyword')
	df_100key_genres = df100.join(df_gen_vote)
	df_100key_genres.pop('Votes')
	df_100key_genres = df_100key_genres.fillna(0)
	# df_100key_genres.to_pickle('../data/df_100key_genres')
	return df_100key_genres
	
def movie_model(df_100key_genres, max_depth = 20, pickle_path = '../data/my_movie_model20_v10.pkl'):
	X = df_100key_genres.values
	y = df_100key_genres.index
	clf = DecisionTreeClassifier('entropy',max_depth = max_depth)
	clf.fit(X,y)
	# clf.score(X,y)
	# joblib.dump(clf, pickle_path)
	return clf

def save_feature_movie_name(df_100key_genres, save_path = '../data/feature_movie_name'):
	movie_list = df_100key_genres.index
	feature_list = df_100key_genres.columns.values
	np.savez(save_path,movie_list,feature_list)

def save_model_features(clf,save_path = '../data/my_movie_model20_10_array'):
	np.savez(save_path,clf.tree_.children_left,clf.tree_.children_right,clf.tree_.feature,clf.tree_.threshold)

def save_model_value(clf, save_path = '../data/my_movie_model20_10_value'):
	valuefiles = clf.tree_.value
	sparse_values = sparse.lil_matrix(valuefiles.astype(int))
	np.save(save_path,sparse_values)


/Users/zoesh/anaconda/lib/python2.7/site-packages/pandas/computation/__init__.py:19: UserWarning: The installed version of numexpr 2.4.4 is not supported in pandas and will be not be used

  UserWarning)

In [5]:
df_popular_movie = movie_rating(rating_file = 'data/ratings.list', min_vote_cnt = 10000)
df_genres_pivot = movie_genres(genres_file = 'data/genres.list',pickle_path = 'data/df_genres_pivot')
df_gen_vote = movie_genres_rating(df_movie_genres = df_genres_pivot, df_movie_rating = df_popular_movie)
df_key = movie_keyword(keyword_file = 'data/keywords_clean.list', pickle_path = 'data/df_key')
df_100key_genres = movie_force_data(df_key = df_key, df_gen_vote = df_gen_vote, number_keywords = 100)
clf = movie_model(df_100key_genres = df_100key_genres, max_depth = 20, pickle_path = 'data/my_movie_model20_v10.pkl')


/Users/zoesh/anaconda/lib/python2.7/site-packages/pandas/core/generic.py:2698: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  self[name] = value

In [3]:
ls


LICENSE           README.md         code/             flaskapp/
MovieForce.ipynb  Untitled.ipynb    data/             requirements.txt

In [6]:
df_popular_movie


Out[6]:
New Distribution Votes Rank Title Votes Movie
Movie
'71 (2014) 0000013200 31201 7.2 '71 (2014) 31201 '71 (2014)
'A' gai wak (1983) 0000012211 10311 7.4 'A' gai wak (1... 10311 'A' gai wak (1983)
'Breaker' Morant (1980) 0000001221 10042 7.9 'Breaker' Mora... 10042 'Breaker' Morant (1980)
'Crocodile' Dundee II (1988) 0001221000 42905 5.5 'Crocodile' Du... 42905 'Crocodile' Dundee II (1988)
(500) Days of Summer (2009) 0000002311 361385 7.8 (500) Days of ... 361385 (500) Days of Summer (2009)
(T)Raumschiff Surprise - Periode 1 (2004) 0001111000 10067 5.3 (T)Raumschiff ... 10067 (T)Raumschiff Surprise - Periode 1 (2004)
*batteries not included (1987) 0000122100 22306 6.5 *batteries not... 22306 *batteries not included (1987)
...E tu vivrai nel terrore! L'aldil� (1981) 0000012111 14467 6.9 ...E tu vivrai... 14467 ...E tu vivrai nel terrore! L'aldil� (1981)
...and justice for all. (1979) 0000013211 22086 7.4 ...and justice... 22086 ...and justice for all. (1979)
1 - Nenokkadine (2014) 0000000016 33644 8.6 1 - Nenokkadin... 33644 1 - Nenokkadine (2014)
10 (1979) 0000122100 11917 6.0 10 (1979) 11917 10 (1979)
10 Items or Less (2006) 0000012100 12603 6.7 10 Items or Le... 12603 10 Items or Less (2006)
10 Things I Hate About You (1999) 0000012211 211996 7.2 10 Things I Ha... 211996 10 Things I Hate About You (1999)
10 Years (2011) 0000122100 17704 6.1 10 Years (2011) 17704 10 Years (2011)
10,000 BC (2008) 0001111000 106190 5.1 10,000 BC (2008) 106190 10,000 BC (2008)
100 Feet (2008) 0001121000 10145 5.5 100 Feet (2008) 10145 100 Feet (2008)
100 Girls (2000) 0000122000 18220 5.9 100 Girls (2000) 18220 100 Girls (2000)
101 Dalmatians (1996) 0001221000 70286 5.6 101 Dalmatians... 70286 101 Dalmatians (1996)
102 Dalmatians (2000) 0011210000 25441 4.8 102 Dalmatians... 25441 102 Dalmatians (2000)
11-11-11 (2011) 1111100000 10951 4.0 11-11-11 (2011) 10951 11-11-11 (2011)
11:14 (2003) 0000013210 37422 7.2 11:14 (2003) 37422 11:14 (2003)
12 (2007) 0000001212 11375 7.8 12 (2007) 11375 12 (2007)
12 Angry Men (1957) 0000000133 421806 8.9 12 Angry Men (... 421806 12 Angry Men (1957)
12 Angry Men (1997) (TV) 0000001311 10133 7.8 12 Angry Men (... 10133 12 Angry Men (1997) (TV)
12 Rounds (2009) 0000121000 22237 5.6 12 Rounds (2009) 22237 12 Rounds (2009)
12 Years a Slave (2013) 0000001321 407264 8.1 12 Years a Sla... 407264 12 Years a Slave (2013)
127 Hours (2010) 0000002311 268073 7.6 127 Hours (2010) 268073 127 Hours (2010)
13 (2010/I) 0000122100 33628 6.1 13 (2010/I) 33628 13 (2010/I)
13 Going on 30 (2004) 0000122100 116619 6.1 13 Going on 30... 116619 13 Going on 30 (2004)
13 Sins (2014) 0000122100 22052 6.3 13 Sins (2014) 22052 13 Sins (2014)
... ... ... ...
Zhui quan (1978) 0000002311 24419 7.6 Zhui quan (1978) 24419 Zhui quan (1978)
Zindagi Na Milegi Dobara (2011) 0000001222 40393 8.1 Zindagi Na Mil... 40393 Zindagi Na Milegi Dobara (2011)
Zodiac (2007) 0000002311 284647 7.7 Zodiac (2007) 284647 Zodiac (2007)
Zombeavers (2014) 0011111000 10187 4.8 Zombeavers (2014) 10187 Zombeavers (2014)
Zombi 2 (1979) 0000012101 19545 6.9 Zombi 2 (1979) 19545 Zombi 2 (1979)
Zombie Strippers (2008) 1111110000 15486 4.1 Zombie Strippe... 15486 Zombie Strippers (2008)
Zombieland (2009) 0000002311 368619 7.7 Zombieland (2009) 368619 Zombieland (2009)
Zookeeper (2011) 0001221000 42934 5.2 Zookeeper (2011) 42934 Zookeeper (2011)
Zoolander (2001) 0000012100 188055 6.6 Zoolander (2001) 188055 Zoolander (2001)
Zoom (2006) 1011110000 14503 4.2 Zoom (2006) 14503 Zoom (2006)
Zulu (1964) 0000001311 28231 7.8 Zulu (1964) 28231 Zulu (1964)
Zulu (2013) 0000023100 11429 6.7 Zulu (2013) 11429 Zulu (2013)
Zwartboek (2006) 0000002311 58098 7.8 Zwartboek (2006) 58098 Zwartboek (2006)
[Rec] (2007) 0000002311 126144 7.5 [Rec] (2007) 126144 [Rec] (2007)
[Rec]� (2009) 0000122100 53629 6.6 [Rec]� (2009) 53629 [Rec]� (2009)
[Rec]�: G�nesis (2012) 0001111000 24932 5.1 [Rec]�: G�nesi... 24932 [Rec]�: G�nesis (2012)
eXistenZ (1999) 0000012200 75198 6.8 eXistenZ (1999) 75198 eXistenZ (1999)
i (2015) 0000000114 11743 7.7 i (2015) 11743 i (2015)
xXx (2002) 0000122000 138423 5.8 xXx (2002) 138423 xXx (2002)
xXx: State of the Union (2005) 0011110000 49462 4.3 xXx: State of ... 49462 xXx: State of the Union (2005)
�Three Amigos! (1986) 0000122100 51513 6.4 �Three Amigos!... 51513 �Three Amigos! (1986)
� bout de souffle (1960) 0000001212 49641 8.0 � bout de souf... 49641 � bout de souffle (1960)
� bout portant (2010) 0000023200 11043 6.8 � bout portant... 11043 � bout portant (2010)
� l'int�rieur (2007) 0000012211 28011 6.9 � l'int�rieur ... 28011 � l'int�rieur (2007)
� la folie... pas du tout (2002) 0000012210 15836 7.2 � la folie... ... 15836 � la folie... pas du tout (2002)
�tame! (1989) 0000013200 17196 7.0 �tame! (1989) 17196 �tame! (1989)
�on Flux (2005) 0001221000 108764 5.5 �on Flux (2005) 108764 �on Flux (2005)
��p��ler Krali (1977) 0000000115 12305 8.7 ��p��ler Krali... 12305 ��p��ler Krali (1977)
�dishon (1999) 0000012210 53358 7.2 �dishon (1999) 53358 �dishon (1999)
�� Maymun (2008) 0000012211 13771 7.4 �� Maymun (2008) 13771 �� Maymun (2008)

6459 rows × 3 columns


In [7]:
df_genres_pivot


Out[7]:
Genres Action Adult Adventure Animation Biography Comedy Commercial Crime Documentary Drama ... Reality-TV Romance Sci-Fi Short Sport Talk-Show Thriller War Western _ Drama<>Mystery<>crime_
idx
!Next? (1994) NaN NaN NaN NaN NaN NaN NaN NaN 1.0 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
# (2012) NaN NaN NaN NaN NaN 1.0 NaN NaN NaN NaN ... NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN
# (2014) NaN NaN NaN NaN NaN 1.0 NaN NaN NaN NaN ... NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN
# My Ass (2015) (V) NaN 1.0 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
#1 (2005) NaN NaN NaN NaN NaN NaN NaN NaN NaN 1.0 ... NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN
#1 (2009) NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN
#1 (2010) NaN NaN NaN NaN NaN 1.0 NaN NaN NaN NaN ... NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN
#1 (2010/I) (V) NaN NaN NaN NaN NaN 1.0 NaN NaN NaN 1.0 ... NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN
#1 (2010/II) (V) NaN NaN NaN 1.0 NaN NaN NaN NaN NaN 1.0 ... NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN
#1 Beauty Nail Salon (2014) NaN NaN NaN NaN NaN NaN NaN NaN NaN 1.0 ... NaN NaN NaN 1.0 NaN NaN NaN 1.0 NaN NaN
#1 Cheerleader Camp (2010) (V) NaN NaN NaN NaN NaN 1.0 NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
#1 Fan: A Darkomentary (2005) (V) NaN NaN NaN NaN NaN 1.0 NaN NaN NaN NaN ... NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN
#1 Mamarazzi (????) NaN NaN NaN NaN NaN 1.0 NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
#1 Serial Killer (2013) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
#1 Single (2006) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 1.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN
#1 With A Bullet (2011) NaN NaN NaN NaN NaN 1.0 NaN NaN NaN NaN ... NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN
#1 at the Apocalypse Box Office (2015) NaN NaN NaN NaN NaN 1.0 NaN NaN NaN NaN ... NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN
#10007 (2015) NaN NaN NaN NaN NaN NaN NaN NaN NaN 1.0 ... NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN
#1137 (2015) NaN NaN 1.0 NaN NaN NaN NaN NaN NaN 1.0 ... NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN
#11: The Issue (2007) (V) NaN NaN NaN NaN NaN 1.0 NaN NaN NaN NaN ... NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN
#137 (2011) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN 1.0 1.0 NaN NaN NaN NaN NaN NaN
#140Characters: A Documentary About Twitter (2011) NaN NaN NaN NaN 1.0 NaN NaN NaN 1.0 NaN ... NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN
#15SecondScare (2015) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN 1.0 NaN NaN 1.0 NaN NaN NaN
#1: Static (2005) (V) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN
#1MinuteNightmare (2014) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
#2 Chick (2014) NaN NaN NaN NaN NaN 1.0 NaN NaN NaN NaN ... NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN
#211 (????) 1.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
#22 (mis_ing) (2008) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN
#23 (2014) NaN NaN NaN NaN NaN NaN NaN NaN NaN 1.0 ... NaN 1.0 NaN 1.0 NaN NaN NaN NaN NaN NaN
#26113 (2013) NaN NaN NaN NaN NaN NaN NaN NaN NaN 1.0 ... NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
�egar �a� gerist (1998) (TV) NaN NaN NaN NaN NaN 1.0 NaN NaN NaN 1.0 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
�etta Reddast (2013) NaN NaN NaN NaN NaN 1.0 NaN NaN NaN 1.0 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
�etta er ekkert m�l (2006) NaN NaN NaN NaN 1.0 NaN NaN NaN 1.0 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
�j��skinna (1973) (TV) NaN NaN NaN NaN NaN 1.0 NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
�restir (2015) NaN NaN NaN NaN NaN NaN NaN NaN NaN 1.0 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
�ri�ja nafni (2003) NaN NaN NaN NaN NaN 1.0 NaN NaN NaN 1.0 ... NaN 1.0 NaN NaN NaN NaN 1.0 NaN NaN NaN
�rot (????) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN 1.0 NaN NaN NaN
�r�ng s�n (2005) NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN
�yngdarafl (2010) NaN NaN NaN NaN NaN 1.0 NaN NaN NaN 1.0 ... NaN NaN 1.0 1.0 NaN NaN NaN NaN NaN NaN
� la recherche de silence (2014) NaN NaN NaN NaN NaN NaN NaN NaN NaN 1.0 ... NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN
� parte (2010) NaN NaN NaN NaN NaN NaN NaN 1.0 NaN NaN ... NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN
� port�e de main: Outrage & Rebellion (2010) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN
� prendre ou � laisser (2010) NaN NaN NaN NaN NaN NaN NaN NaN NaN 1.0 ... NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN
� propos: philosophie (2016) NaN NaN NaN NaN NaN NaN NaN NaN 1.0 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
����� ����� (2014) {{SUSPENDED}} NaN NaN NaN NaN NaN NaN NaN NaN NaN 1.0 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
�rtico (2014) NaN NaN NaN NaN NaN NaN NaN NaN NaN 1.0 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
� g� videre (2014) NaN NaN NaN NaN NaN NaN NaN NaN NaN 1.0 ... NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN
�a go�te le ciel (2014) NaN NaN NaN NaN NaN NaN NaN NaN NaN 1.0 ... NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN
�a promet ! (2011) NaN NaN NaN NaN NaN 1.0 NaN NaN NaN NaN ... NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN
� solo questione di punti di vista (2012) 1.0 NaN 1.0 NaN NaN 1.0 NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
� solo questione di tempo (2013) NaN NaN NaN NaN NaN 1.0 NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
�X-Driver the Movie (2002) (V) 1.0 NaN NaN 1.0 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
�X-Driver: Nina & Rei Danger Zone (2002) (V) NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN
�l (2001) (V) NaN 1.0 NaN 1.0 NaN NaN NaN NaN NaN NaN ... NaN NaN 1.0 NaN NaN NaN 1.0 NaN NaN NaN
�C�caro! (2002) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN
�Maten a ese hijo de la chingada! (2008) (V) 1.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
�slenska, on the Road to Unearth Iceland's Secrets... (2007) NaN NaN 1.0 NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN
�ha Sheelagh (2014) NaN NaN NaN NaN NaN 1.0 NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
� (2012) NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN
�� (2012) NaN NaN 1.0 NaN NaN 1.0 NaN NaN NaN NaN ... NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN

1222661 rows × 33 columns


In [8]:
df_gen_vote


Out[8]:
Votes Action Adult Adventure Animation Biography Comedy Commercial Crime Documentary ... News Reality-TV Romance Sci-Fi Short Sport Talk-Show Thriller War Western
Movie
'71 (2014) 31201 1.0 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN 1.0 1.0 NaN
'A' gai wak (1983) 10311 1.0 NaN NaN NaN NaN 1.0 NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
'Breaker' Morant (1980) 10042 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN 1.0 NaN
'Crocodile' Dundee II (1988) 42905 1.0 NaN 1.0 NaN NaN 1.0 NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
(500) Days of Summer (2009) 361385 NaN NaN NaN NaN NaN 1.0 NaN NaN NaN ... NaN NaN 1.0 NaN NaN NaN NaN NaN NaN NaN
(T)Raumschiff Surprise - Periode 1 (2004) 10067 NaN NaN NaN NaN NaN 1.0 NaN NaN NaN ... NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN
*batteries not included (1987) 22306 NaN NaN NaN NaN NaN 1.0 NaN NaN NaN ... NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN
...E tu vivrai nel terrore! L'aldil� (1981) 14467 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
...and justice for all. (1979) 22086 NaN NaN NaN NaN NaN NaN NaN 1.0 NaN ... NaN NaN NaN NaN NaN NaN NaN 1.0 NaN NaN
1 - Nenokkadine (2014) 33644 1.0 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN 1.0 NaN NaN
10 (1979) 11917 NaN NaN NaN NaN NaN 1.0 NaN NaN NaN ... NaN NaN 1.0 NaN NaN NaN NaN NaN NaN NaN
10 Items or Less (2006) 12603 NaN NaN NaN NaN NaN 1.0 NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
10 Things I Hate About You (1999) 211996 NaN NaN NaN NaN NaN 1.0 NaN NaN NaN ... NaN NaN 1.0 NaN NaN NaN NaN NaN NaN NaN
10 Years (2011) 17704 NaN NaN NaN NaN NaN 1.0 NaN NaN NaN ... NaN NaN 1.0 NaN NaN NaN NaN NaN NaN NaN
10,000 BC (2008) 106190 1.0 NaN 1.0 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
100 Feet (2008) 10145 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN 1.0 NaN NaN
100 Girls (2000) 18220 NaN NaN NaN NaN NaN 1.0 NaN NaN NaN ... NaN NaN 1.0 NaN NaN NaN NaN NaN NaN NaN
101 Dalmatians (1996) 70286 NaN NaN 1.0 NaN NaN 1.0 NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
102 Dalmatians (2000) 25441 NaN NaN 1.0 NaN NaN 1.0 NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
11-11-11 (2011) 10951 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN 1.0 NaN NaN
11:14 (2003) 37422 NaN NaN NaN NaN NaN 1.0 NaN 1.0 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
12 (2007) 11375 NaN NaN NaN NaN NaN NaN NaN 1.0 NaN ... NaN NaN NaN NaN NaN NaN NaN 1.0 1.0 NaN
12 Angry Men (1957) 421806 NaN NaN NaN NaN NaN NaN NaN 1.0 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
12 Angry Men (1997) (TV) 10133 NaN NaN NaN NaN NaN NaN NaN 1.0 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
12 Rounds (2009) 22237 1.0 NaN NaN NaN NaN NaN NaN 1.0 NaN ... NaN NaN NaN NaN NaN NaN NaN 1.0 NaN NaN
12 Years a Slave (2013) 407264 NaN NaN NaN NaN 1.0 NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
127 Hours (2010) 268073 NaN NaN 1.0 NaN 1.0 NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN 1.0 NaN NaN
13 (2010/I) 33628 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN 1.0 NaN NaN
13 Going on 30 (2004) 116619 NaN NaN NaN NaN NaN 1.0 NaN NaN NaN ... NaN NaN 1.0 NaN NaN NaN NaN NaN NaN NaN
13 Sins (2014) 22052 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN 1.0 NaN NaN
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
Zhui quan (1978) 24419 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Zindagi Na Milegi Dobara (2011) 40393 NaN NaN 1.0 NaN NaN 1.0 NaN NaN NaN ... NaN NaN 1.0 NaN NaN NaN NaN NaN NaN NaN
Zodiac (2007) 284647 NaN NaN NaN NaN NaN NaN NaN 1.0 NaN ... NaN NaN NaN NaN NaN NaN NaN 1.0 NaN NaN
Zombeavers (2014) 10187 NaN NaN NaN NaN NaN 1.0 NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Zombi 2 (1979) 19545 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Zombie Strippers (2008) 15486 NaN NaN NaN NaN NaN 1.0 NaN NaN NaN ... NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN
Zombieland (2009) 368619 NaN NaN 1.0 NaN NaN 1.0 NaN NaN NaN ... NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN
Zookeeper (2011) 42934 NaN NaN NaN NaN NaN 1.0 NaN NaN NaN ... NaN NaN 1.0 NaN NaN NaN NaN NaN NaN NaN
Zoolander (2001) 188055 NaN NaN NaN NaN NaN 1.0 NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Zoom (2006) 14503 1.0 NaN 1.0 1.0 NaN NaN NaN NaN NaN ... NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN
Zulu (1964) 28231 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN 1.0 NaN
Zulu (2013) 11429 NaN NaN NaN NaN NaN NaN NaN 1.0 NaN ... NaN NaN NaN NaN NaN NaN NaN 1.0 NaN NaN
Zwartboek (2006) 58098 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN 1.0 1.0 NaN
[Rec] (2007) 126144 1.0 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN
[Rec]� (2009) 53629 1.0 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN 1.0 NaN NaN
[Rec]�: G�nesis (2012) 24932 1.0 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN 1.0 NaN NaN NaN NaN NaN NaN NaN
eXistenZ (1999) 75198 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN 1.0 NaN NaN NaN 1.0 NaN NaN
i (2015) 11743 1.0 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN 1.0 NaN NaN NaN NaN 1.0 NaN NaN
xXx (2002) 138423 1.0 NaN 1.0 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
xXx: State of the Union (2005) 49462 1.0 NaN 1.0 NaN NaN NaN NaN 1.0 NaN ... NaN NaN NaN NaN NaN NaN NaN 1.0 NaN NaN
�Three Amigos! (1986) 51513 NaN NaN NaN NaN NaN 1.0 NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 1.0
� bout de souffle (1960) 49641 NaN NaN NaN NaN NaN NaN NaN 1.0 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
� bout portant (2010) 11043 1.0 NaN NaN NaN NaN NaN NaN 1.0 NaN ... NaN NaN NaN NaN NaN NaN NaN 1.0 NaN NaN
� l'int�rieur (2007) 28011 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
� la folie... pas du tout (2002) 15836 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN 1.0 NaN NaN NaN NaN 1.0 NaN NaN
�tame! (1989) 17196 NaN NaN NaN NaN NaN 1.0 NaN 1.0 NaN ... NaN NaN 1.0 NaN NaN NaN NaN NaN NaN NaN
�on Flux (2005) 108764 1.0 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN
��p��ler Krali (1977) 12305 NaN NaN NaN NaN NaN 1.0 NaN NaN NaN ... NaN NaN 1.0 NaN NaN NaN NaN NaN NaN NaN
�dishon (1999) 53358 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN 1.0 NaN NaN NaN NaN 1.0 NaN NaN
�� Maymun (2008) 13771 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

6459 rows × 33 columns


In [9]:
df_key


Out[9]:
0 Movie Keyword
0 # My Ass (2015) (V)\t\t\t\t\tafrican-american # My Ass (2015) (V) african-american
1 # My Ass (2015) (V)\t\t\t\t\tanal-sex # My Ass (2015) (V) anal-sex
2 # My Ass (2015) (V)\t\t\t\t\tanilingus # My Ass (2015) (V) anilingus
3 # My Ass (2015) (V)\t\t\t\t\tass-to-mouth # My Ass (2015) (V) ass-to-mouth
4 # My Ass (2015) (V)\t\t\t\t\tcum-swallowing # My Ass (2015) (V) cum-swallowing
5 # My Ass (2015) (V)\t\t\t\t\tdouble-penetration # My Ass (2015) (V) double-penetration
6 # My Ass (2015) (V)\t\t\t\t\tejaculation-in-mouth # My Ass (2015) (V) ejaculation-in-mouth
7 # My Ass (2015) (V)\t\t\t\t\tfacial # My Ass (2015) (V) facial
8 # My Ass (2015) (V)\t\t\t\t\tfingering # My Ass (2015) (V) fingering
9 # My Ass (2015) (V)\t\t\t\t\tgonzo # My Ass (2015) (V) gonzo
10 # My Ass (2015) (V)\t\t\t\t\thardcore # My Ass (2015) (V) hardcore
11 # My Ass (2015) (V)\t\t\t\t\tinterracial-sex # My Ass (2015) (V) interracial-sex
12 # My Ass (2015) (V)\t\t\t\t\toral-sex # My Ass (2015) (V) oral-sex
13 # My Ass (2015) (V)\t\t\t\t\tsex # My Ass (2015) (V) sex
14 # My Ass (2015) (V)\t\t\t\t\tshaved-vagina # My Ass (2015) (V) shaved-vagina
15 # My Ass (2015) (V)\t\t\t\t\tsquirt # My Ass (2015) (V) squirt
16 # My Ass (2015) (V)\t\t\t\t\tstockings # My Ass (2015) (V) stockings
17 # My Ass (2015) (V)\t\t\t\t\ttattoo # My Ass (2015) (V) tattoo
18 # My Ass (2015) (V)\t\t\t\t\ttattooed-woman # My Ass (2015) (V) tattooed-woman
19 # My Ass (2015) (V)\t\t\t\t\tthreesome # My Ass (2015) (V) threesome
20 #1 (2010)\t\t\t\t\t\tjanitor #1 (2010) janitor
21 #1 (2010)\t\t\t\t\t\tmagic #1 (2010) magic
22 #1 (2010)\t\t\t\t\t\tpencil #1 (2010) pencil
23 #1 (2010)\t\t\t\t\t\tschool #1 (2010) school
24 #1 (2010)\t\t\t\t\t\tsurprise #1 (2010) surprise
25 #1 Cheerleader Camp (2010) (V)\t\t\t\t2010s #1 Cheerleader Camp (2010) (V) 2010s
26 #1 Cheerleader Camp (2010) (V)\t\t\t\taudience #1 Cheerleader Camp (2010) (V) audience
27 #1 Cheerleader Camp (2010) (V)\t\t\t\tblack-pa... #1 Cheerleader Camp (2010) (V) black-panties
28 #1 Cheerleader Camp (2010) (V)\t\t\t\tblonde #1 Cheerleader Camp (2010) (V) blonde
29 #1 Cheerleader Camp (2010) (V)\t\t\t\tbreasts #1 Cheerleader Camp (2010) (V) breasts
... ... ... ...
4689057 � solo questione di punti di vista (2012)\t\tt... � solo questione di punti di vista (2012) treasure
4689058 � solo questione di tempo (2013)\t\t\tcontest � solo questione di tempo (2013) contest
4689059 � solo questione di tempo (2013)\t\t\tensemble... � solo questione di tempo (2013) ensemble-cast
4689060 � solo questione di tempo (2013)\t\t\texpressi... � solo questione di tempo (2013) expression-taken-literally
4689061 � solo questione di tempo (2013)\t\t\tgreed � solo questione di tempo (2013) greed
4689062 � solo questione di tempo (2013)\t\t\tmoney � solo questione di tempo (2013) money
4689063 � solo questione di tempo (2013)\t\t\tmulti-pr... � solo questione di tempo (2013) multi-protagonist
4689064 � solo questione di tempo (2013)\t\t\trace � solo questione di tempo (2013) race
4689065 � solo questione di tempo (2013)\t\t\tradar � solo questione di tempo (2013) radar
4689066 � solo questione di tempo (2013)\t\t\tslapstic... � solo questione di tempo (2013) slapstick-comedy
4689067 � solo questione di tempo (2013)\t\t\tstolen-bike � solo questione di tempo (2013) stolen-bike
4689068 �l (2001) (V)\t\t\t\t\t\tanime �l (2001) (V) anime
4689069 �l (2001) (V)\t\t\t\t\t\tcomputer �l (2001) (V) computer
4689070 �l (2001) (V)\t\t\t\t\t\tfemale-whipping �l (2001) (V) female-whipping
4689071 �l (2001) (V)\t\t\t\t\t\tfuture �l (2001) (V) future
4689072 �l (2001) (V)\t\t\t\t\t\thardcore �l (2001) (V) hardcore
4689073 �l (2001) (V)\t\t\t\t\t\thentai �l (2001) (V) hentai
4689074 �l (2001) (V)\t\t\t\t\t\tpolice �l (2001) (V) police
4689075 �l (2001) (V)\t\t\t\t\t\tpost-apocalypse �l (2001) (V) post-apocalypse
4689076 �l (2001) (V)\t\t\t\t\t\trape �l (2001) (V) rape
4689077 �l (2001) (V)\t\t\t\t\t\tsex �l (2001) (V) sex
4689078 �l (2001) (V)\t\t\t\t\t\tterrorism �l (2001) (V) terrorism
4689079 �l (2001) (V)\t\t\t\t\t\turination �l (2001) (V) urination
4689080 �l (2001) (V)\t\t\t\t\t\tvirtual-reality �l (2001) (V) virtual-reality
4689081 � (2012)\t\t\t\t\t\tcreature � (2012) creature
4689082 � (2012)\t\t\t\t\t\tear � (2012) ear
4689083 � (2012)\t\t\t\t\t\teye � (2012) eye
4689084 � (2012)\t\t\t\t\t\tisland � (2012) island
4689085 � (2012)\t\t\t\t\t\tone-letter-title � (2012) one-letter-title
4689086 � (2012)\t\t\t\t\t\tsea � (2012) sea

4689087 rows × 3 columns


In [10]:
df_100key_genres


Out[10]:
Keyword $1000000-prize $20-bill $5-bill '50s-music .22-calibre-gun .38-snubnose-revolver .44-magnum .45-automatic .45-calibre-pistol .50-calibre-bullet ... News Reality-TV Romance Sci-Fi Short Sport Talk-Show Thriller War Western
Movie
'71 (2014) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 1.0 0.0
'A' gai wak (1983) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
'Breaker' Morant (1980) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0
'Crocodile' Dundee II (1988) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
(500) Days of Summer (2009) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
(T)Raumschiff Surprise - Periode 1 (2004) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0
*batteries not included (1987) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0
...E tu vivrai nel terrore! L'aldil� (1981) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
...and justice for all. (1979) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0
1 - Nenokkadine (2014) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0
10 (1979) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
10 Items or Less (2006) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
10 Things I Hate About You (1999) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
10 Years (2011) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
10,000 BC (2008) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
100 Feet (2008) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0
100 Girls (2000) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
101 Dalmatians (1996) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
102 Dalmatians (2000) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
11-11-11 (2011) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0
11:14 (2003) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
12 (2007) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 1.0 0.0
12 Angry Men (1957) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
12 Angry Men (1997) (TV) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
12 Rounds (2009) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0
12 Years a Slave (2013) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
127 Hours (2010) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0
13 (2010/I) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0
13 Going on 30 (2004) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
13 Sins (2014) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
Zero Effect (1998) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0
Zindagi Na Milegi Dobara (2011) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
Zodiac (2007) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0
Zombeavers (2014) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
Zombi 2 (1979) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
Zombie Strippers (2008) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0
Zombieland (2009) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0
Zookeeper (2011) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
Zoolander (2001) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
Zoom (2006) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0
Zulu (1964) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0
Zulu (2013) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0
Zwartboek (2006) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 1.0 0.0
[Rec] (2007) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0
[Rec]� (2009) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0
[Rec]�: G�nesis (2012) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
eXistenZ (1999) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 0.0 0.0
i (2015) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0
xXx (2002) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
xXx: State of the Union (2005) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0
�Three Amigos! (1986) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0
� bout de souffle (1960) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
� bout portant (2010) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0
� l'int�rieur (2007) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
� la folie... pas du tout (2002) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0
�tame! (1989) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
�on Flux (2005) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0
��p��ler Krali (1977) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
�dishon (1999) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0
�� Maymun (2008) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

6424 rows × 54151 columns


In [13]:
from nltk.corpus import wordnet
from itertools import product
list1 = ['childhood']
list2 = ['childhood','memory']
allsyns1 = set(ss for word in list1 for ss in wordnet.synsets(word))
allsyns2 = set(ss for word in list2 for ss in wordnet.synsets(word))
best = [(wordnet.wup_similarity(s1, s2) or 0, s1, s2) for s1, s2 in 
        product(allsyns1, allsyns2)]

In [14]:
best


Out[14]:
[(0.14285714285714285, Synset('childhood.n.01'), Synset('memory.n.04')),
 (0.2222222222222222, Synset('childhood.n.01'), Synset('memory.n.05')),
 (0.2857142857142857, Synset('childhood.n.01'), Synset('memory.n.02')),
 (0.2857142857142857, Synset('childhood.n.01'), Synset('memory.n.03')),
 (0.2857142857142857, Synset('childhood.n.01'), Synset('memory.n.01')),
 (1.0, Synset('childhood.n.01'), Synset('childhood.n.01')),
 (0.3076923076923077, Synset('childhood.n.01'), Synset('childhood.n.02')),
 (0.15384615384615385, Synset('childhood.n.02'), Synset('memory.n.04')),
 (0.23529411764705882, Synset('childhood.n.02'), Synset('memory.n.05')),
 (0.3076923076923077, Synset('childhood.n.02'), Synset('memory.n.02')),
 (0.3076923076923077, Synset('childhood.n.02'), Synset('memory.n.03')),
 (0.3076923076923077, Synset('childhood.n.02'), Synset('memory.n.01')),
 (0.3076923076923077, Synset('childhood.n.02'), Synset('childhood.n.01')),
 (1.0, Synset('childhood.n.02'), Synset('childhood.n.02'))]

In [15]:
df_100key_genres.index


Out[15]:
Index([u''71 (2014)', u''A' gai wak (1983)', u''Breaker' Morant (1980)',
       u''Crocodile' Dundee II (1988)', u'(500) Days of Summer (2009)',
       u'(T)Raumschiff Surprise - Periode 1 (2004)',
       u'*batteries not included (1987)',
       u'...E tu vivrai nel terrore! L'aldil� (1981)',
       u'...and justice for all. (1979)', u'1 - Nenokkadine (2014)',
       ...
       u'�Three Amigos! (1986)', u'� bout de souffle (1960)',
       u'� bout portant (2010)', u'� l'int�rieur (2007)',
       u'� la folie... pas du tout (2002)', u'�tame! (1989)',
       u'�on Flux (2005)', u'��p��ler Krali (1977)', u'�dishon (1999)',
       u'�� Maymun (2008)'],
      dtype='object', name=u'Movie', length=6424)

In [16]:
df_100key_genres.columns.values


Out[16]:
array(['$1000000-prize', '$20-bill', '$5-bill', ..., 'Thriller', 'War',
       'Western'], dtype=object)

In [39]:
df_100key_genres.to_csv('data/df_pickle')

In [38]:
df_100key_genres.to_csv?

In [40]:
df = pd.read_csv('data/df_pickle')

In [70]:
from collections import defaultdict
movie_dict = defaultdict(list)
for movie in df_100key_genres.index.values:
    for keyword,value in df_100key_genres.loc[movie].iteritems():
        if value == 1:
            movie_dict[movie].append(keyword.decode('latin-1').encode("utf-8"))

In [73]:
with open('data/movie_dict.json', 'w') as f:
    json.dump(movie_dict, f,encoding='ISO-8859-1')

In [76]:
with open('data/test.json', 'r') as f:
    a= json.load(f)

In [90]:
set(movie_dict[u"'71 (2014)"])


Out[90]:
{'1970s',
 'Action',
 'Drama',
 'Thriller',
 'War',
 'apartment',
 'apostrophe-in-title',
 'armored-car',
 'army-vs-civilians',
 'assault-rifle',
 'attempted-murder',
 'barracks',
 'battle',
 'bayonet',
 'beaten-to-death',
 'beating',
 'behind-enemy-lines',
 'belfast-northern-ireland',
 'beret',
 'blood',
 'blood-splatter',
 'boat',
 'body-bag',
 'bomb',
 'boxing',
 'british-army',
 'british-military',
 'british-soldier',
 'brutality',
 'bus',
 'chase',
 'child-swearing',
 'child-with-a-gun',
 'cigarette-smoking',
 'combat',
 'corporal',
 'corpse',
 'dead-soldier',
 'death',
 'desperation',
 'directorial-debut',
 'electronic-music-score',
 'escape',
 'ex-soldier',
 'exploding-building',
 'explosion',
 'f-word',
 'fire',
 'firearm',
 'fish-out-of-water',
 'foot-chase',
 'gang',
 'gunfight',
 'hatred',
 'heavy-rain',
 'held-at-gunpoint',
 'hiding',
 'hit-with-a-brick',
 'home-invasion',
 'hostage',
 'husband-wife-relationship',
 'independent-film',
 'interrogation',
 'ira',
 'ireland',
 'irish-republican-army',
 'kidnapping',
 'knife',
 'knocked-out',
 'lieutenant',
 'long-take',
 'lost',
 'machine-gun',
 'manhunt',
 'map',
 'medic',
 'military',
 'military-life',
 'military-training',
 'molotov-cocktail',
 'murder',
 'murder-of-a-child',
 'murder-of-a-teenager',
 'neo-noir',
 'no-opening-credits',
 'number-in-title',
 'obsession',
 'on-the-run',
 'one-day',
 'one-word-title',
 'orphan',
 'orphanage',
 'pistol',
 'police',
 'police-brutality',
 'presumed-dead',
 'pub',
 'punctuation-in-title',
 'raid',
 'reference-to-david-bowie',
 'revolver',
 'riot',
 'rogue-soldier',
 'rookie'}

In [98]:
set(['1970s','on-the-run']).issubset(set(movie_dict[u"'71 (2014)"]))


Out[98]:
True

In [100]:
next_movie_list = []
true_list = ['1970s']
false_list = ['riot','rogue-soldier',]
for movie, features in movie_dict.iteritems():
    if (set(true_list).issubset(set(features)) and (not set(false_list).issubset(set(features)))):
        next_movie_list.append(movie)

In [102]:
newdict=defaultdict(list)
for i in next_movie_list:
    newdict[i] = movie_dict[i]

In [120]:
sample={'user1': {'item1': 2.5, 'item2': 3.5, 'item3': 3.0, 'item4': 3.5, 'item5': 2.5, 'item6': 3.0},
        'user2': {'item1': 2.5, 'item2': 3.0, 'item3': 3.5, 'item4': 4.0},
        'user3': {'item2':4.5,'item5':1.0,'item6':4.0}}

df = pd.DataFrame([
    [col1,d] for col1, d in sample.items()
])

In [138]:
df = pd.DataFrame([
    [col1,v] for col1, v in newdict.iteritems()])

In [145]:
new_feature = []
for k, v in newdict.iteritems():
    new_feature.extend(v)

In [147]:
len(new_feature)


Out[147]:
28440

In [148]:
print len(set(new_feature))


10137

In [174]:
df = pd.DataFrame(columns = ['name','features','count'])
ix = 0
for k, v in newdict.items():
    for i in v:
        df.loc[ix] = [k,i,1]
        ix+=1

In [175]:
df_new = df.pivot_table(values='count', index='name', columns='features', aggfunc='mean')

In [176]:
df_new


Out[176]:
features .44-magnum 007 1-year-later 10-downing-street 10-year-old 11-year-old 110-missing-persons 11th-century 12-year-old 13-year-old ... year-2011 year-802701 yo-mamma-joke yoga yorkshire youth youth-club zaire zombie zurich-switzerland
name
24 Hour Party People (2002) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
54 (1998) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
A Beautiful Mind (2001) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
A Home at the End of the World (2004) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Agneepath (2012) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Ain't Them Bodies Saints (2013) NaN NaN NaN NaN NaN NaN NaN NaN 1.0 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Airport (1970) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Ali (2001) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Alive (1993) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
All Good Things (2010) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
All the President's Men (1976) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Almost Famous (2000) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Altered States (1980) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
American Gangster (2007) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
American Hustle (2013) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
American Splendor (2003) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Anchorman: The Legend of Ron Burgundy (2004) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Angst essen Seele auf (1974) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Annabelle (2014/I) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Annie Hall (1977) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Apollo 13 (1995) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Apollo 18 (2011) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 1.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN
Argo (2012) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Assault on Precinct 13 (1976) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
At Close Range (1986) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Austin Powers in Goldmember (2002) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Auto Focus (2002) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Ba wang bie ji (1993) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Backdraft (1991) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Bananas (1971) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
The Towering Inferno (1974) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
The Virgin Suicides (1999) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
The Walk (2015/II) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
The War (1994) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
The Warriors (1979) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
The Wicker Man (1973) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Tigerland (2000) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Tillsammans (2000) NaN NaN NaN NaN NaN NaN NaN NaN NaN 1.0 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Time After Time (1979) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Tinker Tailor Soldier Spy (2011) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Undercover Brother (2002) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Up in Smoke (1978) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Vanishing Point (1971) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Velvet Goldmine (1998) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Vizontele (2001) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
W. (2008/I) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Walk Hard: The Dewey Cox Story (2007) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Walk the Line (2005) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Watchmen (2009) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
We Are Marshall (2006) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
What's Love Got to Do with It (1993) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
What's Up, Doc? (1972) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
When Harry Met Sally... (1989) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
When We Were Kings (1996) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN 1.0 NaN NaN
Where the Truth Lies (2005) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
X-Men: Days of Future Past (2014) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Young Frankenstein (1974) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Youth Without Youth (2007) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN 1.0 NaN NaN NaN 1.0
Zodiac (2007) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Zombi 2 (1979) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

311 rows × 10137 columns


In [180]:
from sklearn.tree import DecisionTreeClassifier
df_new.fillna(0,inplace = True)
clf = DecisionTreeClassifier('entropy',max_depth = 20)
clf.fit(df_new.values,np.array(df_new.index))


Out[180]:
DecisionTreeClassifier(class_weight=None, criterion='entropy', max_depth=20,
            max_features=None, max_leaf_nodes=None, min_samples_leaf=1,
            min_samples_split=2, min_weight_fraction_leaf=0.0,
            presort=False, random_state=None, splitter='best')

In [181]:
clf.score(df_new.values,np.array(df_new.index))


Out[181]:
1.0

In [182]:
df_new.values


Out[182]:
array([[ 0.,  0.,  0., ...,  0.,  0.,  0.],
       [ 0.,  0.,  0., ...,  0.,  0.,  0.],
       [ 0.,  0.,  0., ...,  0.,  0.,  0.],
       ..., 
       [ 0.,  0.,  0., ...,  0.,  0.,  1.],
       [ 0.,  0.,  0., ...,  0.,  0.,  0.],
       [ 0.,  0.,  0., ...,  0.,  0.,  0.]])

In [ ]: