TMDB作品データセットの分析

このレポートでは、私が映画市場の動向を分析するための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。公演()

Figure_1.png

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()

Figure_2.png

*映画のジャンルは、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()

Figure_4.png

*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()

Figure_3.png

* 2017年までは、ほとんどの映画は、オリジナルではなく、小説に基づいています。

おすすめ

転載: www.cnblogs.com/zfkepic/p/12208083.html