【Python】マーベル映画における男女格差を調べてみた

![アベンジャーズ エンドゲーム.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/c341f091-32c9-b615-76fd-b922e472feaf.jpeg)
11年続いたマーベル・シネマティック・ユニバース(MCU)の「アベンジャーズ」シリーズがいよいよ完結しました。待ちに待った「アベンジャーズ エンドゲーム」が４月26日に公開され、MCUファンではない私も観に行ってきました。さすが集大成の作品です！MCU史上最高傑作と断言してもいいでしょう。

マーベル映画といえば、今年もう1本の作品「キャプテン・マーベル」が３月15日公開されました。この作は、マーベル・シネマティック・ユニバース初の女性ヒーローの単独主演作です。これまで「ワンダーウーマン」、「ジェシカ・ジョーンズ」や「ブラック・ウィドウ」など、女性ヒーローも登場してきました。それは、映画業界ににおける女性の立場の変革を、マーベル作品を通じて訴えると思います。

この記事では、この20年間の2000本映画作品に出る俳優の名前に性別分析を行い、Pythonを使って毎年各映画の男女比率を計算し、映画業界における女性登場人物の変化を見たいと思います。

まず、[Octoparse](https://www.octoparse.jp/)を使って「Box Office Mojo」から2000年ー2019年の映画情報をスクレイピングします。この20年間のURLをOctoparseに入力して、ループ抽出リストを作成します。
![octoparse-task.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/45b3cf33-4662-f6b3-99e8-242556801052.png)

抽出されるデータフィールドは「Title, Actors, Distributors, Domestic_Total_Gross, Foreign_Gross」です。約20分後、20年間で2000本映画の詳細をすべて入手できます。
<img width="798" alt="映画詳細情報.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/c7a01ce2-ecf0-cf9b-6b33-a6a1d89a20ef.png">
 

次に、テキストがトークン化されるように、Pythonでデータを整理します。

```
import collections
import re


def get_first_name(aString):
    if not aString:
        return aString
    ss = aString.replace('*', '').split(' ')  # ['Leonard', 'Nimoy*Chris', 'PineZachary', 'QuintoZoe', 'SaldanaKarl']
    name_list = [] # result returned for this function
    for name in ss:
        names = re.findall('([A-Z])', name) #[N, C]
        if len(names) == 1: # L
            name_list.append(name)
        elif len(names) == 2:
            name_list.append(name[name.find(names[1],1):])  #name.find(names['C']) = 5 --> name[5:] 
    return name_list[0:-1] # array 
```

 
それから、一年の映画の中で女性と男性の俳優の人数を取得します。これを行うために、名前分析を通じて性別を分かる性別辞書リストをロードしました。

```
## Analysze all movie's actor gender by year
all_year_dict = collections.OrderedDict()
for m in sorted_movie_list:
    all_movie_dict[m[0]] = [m[1], m[2]]
    year = m[2]
    actors = m[1]
    try:
        genders = [gender_dict[name] for name in actors]
    except KeyError:
        pass
    if year in all_year_dict:
        all_year_dict[year] += genders
    else:
        all_year_dict[year] = genders
```


完全のコードは[こちら](https://gist.github.com/octoparse/3abc6771a87e49e34c9fa18f2ed7d91e#file-gender_analysis_on_movies-py)からダウンロードできます。
 

#結果
計算した結果、この20年間の映画における男女比率は以下のようになります。このデータから、映画業界は明らかな男女格差が生じていると推察できます。
![20年間映画における男女比率.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/50e16ef6-244f-d962-4301-8d755756a5bf.png)

実際の人数を視覚化してみました。実線は実際の人数を示し、点線は発展傾向を示しています。
![映画における男女格差.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/2ec7157c-5bfc-d956-5e89-6bcf1ddad5ac.png)


2本の線が同じ方向に動いていて、2010年までに上昇し、2011年にピークに達し、それから落ちました。俳優の人数は減っていることを明らかに見えます。このデータから、映画業界は明らかな男女格差が生じていると推察できますが、この数年、この格差がだんだん縮小していることも分かります。
 

##マーベル映画はどうですか？
![マーベル映画における男女格差.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/25360ebe-b122-8b0c-ec40-207f02939b82.png)

![マーベル映画.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/87edda30-8422-55aa-8197-f09dda19c844.png)

 
対照的に、どちらの線も2012年以降上昇しており、2012年から2013年の間に急増しています。さらに、女性俳優もこの時期から増えています。それは、映画業界がより多くの女性俳優をヒーローシリーズに紹介しようとしているという事実に言えます。2012年からの景気回復期はヒーロー映画の流行と男女俳優人数のバランスで重要な役割を果たしています。ヒーローのイメージ、「自由」と「民主主義」の概念を含む国民的アイデンティティを表しています。女性俳優は主人公ではないかもしれませんが、ストーリーラインを前進させ始めているから。ハンガーゲーム（2012）、ダイバージェント（2014）、ルーシー（2014）、マッドマックス：フューリーロード（2015）、ローグワン：スターウォーズストーリー（2016）、ワンダーウーマン（2017）など、映画に登場する異なるタイプのスーパーヒロインはますます増えています。スーパーヒロインの人気は女性の権利をまた一歩前進させるでしょう。

 

映画業界は、まだまだ発展できるので、もっと魅力的で斬新な映画が観られるのです。女性の活躍を描くような映画も増えると感じられますね。