資源簡介
TMDB電影數(shù)據(jù)分析,包括Kaggle上的原始數(shù)據(jù)集,以及代碼,實現(xiàn)電影類型和票房,利潤等的關(guān)系,對比兩個公司的電影類型收入,拍攝集中年份,畫出餅圖,條形圖,折線圖,并進(jìn)行關(guān)鍵詞的提取,做出詞云圖。
代碼片段和文件信息
import?pandas?as?pd
import?numpy?as?np
import?json
#可視化包
import?matplotlib.pyplot?as?plt
import?matplotlib
#加載詞云圖
from?wordcloud?import?WordCloud
#更改字體
plt.rcParams[‘font.sans-serif‘]?=?[‘SimHei‘]
#讀取演員列表信息和電影列表信息數(shù)據(jù)
credits?=?pd.read_csv(‘tmdb_5000_credits.csv‘encoding=‘utf-8‘)
movies?=?pd.read_csv(‘tmdb_5000_movies.csv‘encoding=‘utf-8‘)
json_cols?=?[‘cast‘‘crew‘]
#json
#編碼:把python對象編碼轉(zhuǎn)換json字符串???json.dumps
#解碼:把json字符串轉(zhuǎn)換成python對象???json.loads
for?i?in?json_cols:
????credits[i]?=?credits[i].apply(json.loads)
#用json方法匯總所有類型
def?get_name(x):
????return?‘‘.join([i[‘name‘]?for?i?in?x])
#?cast?提取演員
credits[‘cast‘]?=?credits[‘cast‘].apply(get_name)
#?crew?提取導(dǎo)演
def?director(x):
????for?i?in?x:
????????if?i[‘job‘]?==‘Director‘:
????????????return?i[‘name‘]
credits[‘crew‘]?=?credits[‘crew‘].apply(director)
#?print(credits.head())
#將‘crew‘轉(zhuǎn)換為’directo‘
credits.rename(columns?=?{‘crew‘:‘director‘}inplace=True)
#?print(credits.head())
#movies?解析
json_colss?=?[‘genres‘‘keywords‘‘spoken_languages‘‘production_countries‘‘production_companies‘]
for?i?in?json_colss:
????movies[i]=movies[i].apply(json.loads)
def?get_names(x):
????return?‘‘.join([i[‘name‘]?for?i?in?x])
movies[‘genres‘]=movies[‘genres‘].apply(get_names)
movies[‘keywords‘]=movies[‘keywords‘].apply(get_names)
movies[‘spoken_languages‘]=movies[‘spoken_languages‘].apply(get_names)
movies[‘production_countries‘]=movies[‘production_countries‘].apply(get_names)
movies[‘production_companies‘]=movies[‘production_companies‘].apply(get_names)
#?print((credits[‘title‘]==movies[‘title‘]).describe())
del?movies[‘title‘]
#合并兩張表
df?=?credits.merge(right=movieshow=‘inner‘left_on=‘movie_id‘right_on=‘id‘)
#?print(df.head())
del?df[‘id‘]
del?df[‘homepage‘]
del?df[‘original_title‘]
del?df[‘tagline‘]
df[‘release_date‘]=df[‘release_date‘].fillna(‘2014-06-01‘)#填充缺失值
df[‘runtime‘]=df[‘runtime‘].fillna(df.runtime.mean())#填充平均值
df[df[[‘release_date‘‘runtime‘]].isnull().values==True]
#獲取電影類型
df[‘genres‘][1].split(‘‘)
genre?=?set()#建立一個集合,會去重
for?i?in?df[‘genres‘].str.split(‘‘):
????genre?=?set().union(igenre)
genre?=?list(genre)
genre.remove(‘‘)
#?print?(genre)
#轉(zhuǎn)化日期格式
df[‘release_year‘]?=?pd.to_datetime(df.release_date?format=?‘%Y-%m-%d‘).dt.year
df[‘release_month‘]?=?pd.to_datetime(df.release_date?format=‘%Y-%m-%d‘).dt.month
#判斷每部電影屬于什么類型,返回1
for?genr?in?genre:
????df[genr]?=?df[‘genres‘].str.contains(genr).apply(lambda?x:1?if?x?else?0)
????????#str.contains?字符串包含
df_gy?=?df.loc[:genre]
#?print(df_gy)
#建立包含電影類型和年份的數(shù)據(jù)框
#?print(df_gy.index)
df_gy.index?=?df[‘release_year‘]
#?print(df_gy.head())
#?df_gy.groupby(‘release_year‘).count().Adventure.plot(figsize=(126))
#?plt.xticks(range(191520185))
#?plt.title(‘電影數(shù)量的年度趨勢圖‘?fontsize?=?20)
#?plt.xlabel(‘年份‘fontsize?=?20)
#?plt.ylabel(‘?dāng)?shù)量‘fontsize?=?20)
#?plt.show()
df_gy1?=?df_gy.sort_index(ascending=?False)#sort_index?索引排序,默認(rèn)升序False?為降序。
#?pri
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????8010??2018-12-20?10:58??kaggle電影分析\test.py
?????文件???40044293??2017-09-28?09:09??kaggle電影分析\tmdb_5000_credits.csv
?????文件????5698602??2017-09-28?09:09??kaggle電影分析\tmdb_5000_movies.csv
?????目錄??????????0??2018-12-20?11:02??kaggle電影分析
?????文件???????8010??2018-12-20?10:58??TMDB電影數(shù)據(jù)分析\test.py
?????文件???40044293??2017-09-28?09:09??TMDB電影數(shù)據(jù)分析\tmdb_5000_credits.csv
?????文件????5698602??2017-09-28?09:09??TMDB電影數(shù)據(jù)分析\tmdb_5000_movies.csv
?????目錄??????????0??2018-12-20?11:02??TMDB電影數(shù)據(jù)分析
-----------?---------??----------?-----??----
?????????????91501810????????????????????8
評論
共有 條評論