このレポートでは、私が映画市場の動向を分析するためのpythonを使用します。
パッケージ:パンダ、numpyの、matplotlibの、Seaborn、JSON
IDE:Pycharm
主な質問:
- どのように映画のジャンルは、時間の経過とともに変化しますか?
- ユニバーサル・ピクチャーズとパラマウント・ピクチャーズとの比較はどうでしょうか?
- 小説、オリジナルに基づいて映画との比較はどうでしょうか?
1.データのインポートおよびクリーニング
パラジウムとしてインポートパンダ PLT用としてインポートmatplotlib.pyplot インポートseaborn SNSは、AS ( 'darkgrid')sns.set_style インポートのJSON NPとしてインポートnumpyのを moviesdf = pd.read_csv( 'movies.csv') movdf = pd.read_csv( 'credits.csv 「)
1)欠損値を記入
ヌル= moviesdf [ "RELEASE_DATE"]。ISNULL() moviesdf.loc [ヌル,:] moviesdf [ 'RELEASE_DATE'] = moviesdf [ 'RELEASE_DATE']。fillna( '2017年11月1日')
2)変換データタイプ
日付
moviesdf.loc [: 'RELEASE_DATE'] = pd.to_datetime(moviesdf.loc [: 'RELEASE_DATE']、 フォーマット= '%Y-%M-%D'、 誤差= '強制')
文字にJSON
#genresの moviesdf [ 'ジャンル'] = moviesdf [ 'ジャンル'](json.loads)を適用する。 私はジッパーで、インデックスの(moviesdf.index、moviesdf [ 'ジャンル']): L = [] の範囲内のjについて( LEN(I)): l.append((I [j]と[ '名前'])) moviesdf.loc [インデックス、 'ジャンル'] = STR(L) #keywords moviesdf [ 'キーワードを'] = moviesdf [ 'キーワード'] .apply(json.loads) インデックスのための、I ZIPに(moviesdf.index、moviesdf ['キーワード]): L = [] の範囲内のjについて(LEN(I)): l.append((I [ J] [ '名前'])) moviesdf.loc [インデックス、 'キーワード'] = STR(L) #production_companies moviesdf [ 'production_companies'] = moviesdf [ 'production_companies']。適用(json.loads) インデックスの、I ZIPに(moviesdf.index、moviesdf [ 'production_companies'): L = [] の範囲内のjに対して(LEN(I))。 l.append((I [J] [ '名前'])) moviesdf.loc [インデックス、 'production_companies'] = STR(L) #production_countries moviesdf [ 'production_countries'] = moviesdf [ 'production_countries']適用(JSON .loads) インデックスのため、I ZIPに(moviesdf.index、moviesdf [ 'production_countries']): L = [] の範囲内のjに対して((IをLEN)): l.append((I [J] [ 'name'の])) moviesdf.loc [インデックス、 'production_countries'] = STR(L)
2.データ処理と可視化
リストの中のジャンルをまとめます
moviesdf [ 'ジャンル'] = moviesdf [ 'ジャンル']。str.strip( '[]')。str.replace(」 ' '')。str.replace( "'" '') moviesdf [ 'ジャンル'] = moviesdf ['ジャンル'] str.split。(' ') LIST1 = [] iについてmoviesdfに['ジャンル]: list1.extend(I) ジャンル= pd.Series(LIST1).value_counts() .sort_values(昇順=偽) ジャンル[10] ジャンル= pd.DataFrame(ジャンル[10]) genres.rename(列= {0: "合計"}、インプレース= TRUE)
1)Barplot:映画金額のジャンル
F、AX = plt.subplots(figsize =(12,10)) G = sns.barplot(Y = genres.index、X = "合計"、データ=ジャンル、パレット= "Blues_d"、AX = AX) PLT。公演()
2)Q1:どのように映画のジャンルは、時間の経過とともに変化しますか?
年= [] moviesdfにおけるxの[ "RELEASE_DATE"]: 年= x.year years.append(年) 年= pd.Series(年) moviesdf [ '年'] =年 。moviesdf [ '年']頭( ) min_year = moviesdf [ '年']分()。 max_year = moviesdf [ '年'] MAX()。 liste_genres =セット() moviesdf中のため[ 'ジャンル']: 。liste_genres =セット()組合(S、 liste_genres) liste_genres =リスト(liste_genres) liste_genres genre_df = pd.DataFrame(インデックス= liste_genres、列=範囲(min_year、max_year + 1)) genre_df = genre_df.fillna(値= 0) 年= np.array(moviesdf [ '年']) z = 0の ためのI moviesdfに['ジャンル]: split_genre =リスト(I) jについてsplit_genreで: genre_df.loc [J、年[Z] = genre_df.loc [J、年[Z] + 1 Z + = 1 genre_df plt.figure(figsize =(15,8)) plt.plot(genre_df.T) PLT .TITLE( 'RRR') plt.xticks(レンジ(1910,2020,5)) plt.legend(genre_df.index) plt.show()
*映画のジャンルは、1975年から1995年から急成長を遂げ、時間の経過とともに増加します。
* 1995年以降、ドラマ、コメディーとスリラー劇的に増加しました。
3)Q2:どのようにユニバーサル・ピクチャーズとパラマウント・ピクチャーズとの比較はありますか?
plt.figure(figsize = (7,4)) two = ['Universal Pictures', 'Paramount Pictures'] num = [77015832,70100000] plt.bar(np.arange(len(two)), num, color = 'c', width = 0.1, align = 'center') plt.ylabel('revenue') plt.xticks(np.arange(len(two)), two) plt.title('Universal Pictures VS Paramount Pictures ') plt.grid(True) plt.show()
*Until 2017, Universal Pictures has a slightly higher revenue than Paramount Pictures.
4) Q3: How is the comparison between the movies based on novel and original?
キーリスト= [ '小説に基づいて'、 'オリジナル'] NUMS = [197,4606] plt.figure(figsize =(7,4)) plt.bar(np.arange(LEN(キーリスト))、NUMS、色= 'C'、幅= 0.1、ALIGN = '中央') plt.ylabel( '金額'、フォントサイズ12)= plt.xticks(np.arange(LEN(キーリスト))を、キー・リスト、フォントサイズ= 12) plt.title(小説のオリジナルVSベース'、フォントサイズ= 14) plt.grid(真) plt.show()
* 2017年までは、ほとんどの映画は、オリジナルではなく、小説に基づいています。