こんにちは。TATです。
今日のテーマは「【Kaggleでデータ分析】Pythonでアニメデータを分析する②〜最高のアニメを探す〜」です。
前回の分析記事の続きです。
【Kaggleでデータ分析】Pythonでアニメデータを分析する①〜データの概要把握とデータ整形〜
続きを見る
前回はデータの概要確認やデータ整形をおこなってきましたが、今回からはきちんと分析していきます。
準備したレビューデータを使って、いろいろな条件で最高のアニメを探してみようと思います。
目次
データのおさらい
まずはデータのおさらいです。
前回の記事に詳細はありますのでここではサクッといきます。
【Kaggleでデータ分析】Pythonでアニメデータを分析する①〜データの概要把握とデータ整形〜
続きを見る
データの入手元はKaggleです。
Anime listからデータをダウンロードしました。
データのダウンロードには登録(Register)が必要です。
ダウンロードしたデータをPythonで読み込んで、概要を確認しつつ、必要なデータ整形を行ったのが前回の記事でした。
データ整形作業としては、次の2つを実施しています。
データ整形
- rated_byを数値データに変換する
- statusをFinishedとAiringだけに絞る
こちらで完成したデータを本記事の分析に活用していきます。
全期間における最高のアニメは?
それではここから最高のアニメを探していきます。
まずはシンプルにデータ全体でみてみます。
ratingが最も高いアニメを見てみましょう。
トップ10を見てみます。カラムは独断で絞りました。
df.sort_values(by="rating", ascending=False).head(10)[["name", "studio", "theme", "source", "rating", "year", "demographic", "rated_by"]]
1位はFullmetal Alchemistです。これは鋼の錬金術師ですね。僕も大好きです。
そして銀魂がたくさんランクインしています。2、6、8、9位が銀魂です。
3位はスパイファミリーです。これは本記事を書いている2022年6月下旬時点でも放送中のものですね。
4位は進撃の巨人です。
全体的に2010年以降の最近のアニメばかりですね。
そしてソースは全て漫画です。
漫画で反響の大きかったものがアニメ化される傾向があるので、評価の高いものが揃いやすい感じがしますね。
各年の最高アニメは?
次に各年における最高のアニメを見てみます。
これは放送開始年でみます。
それぞれの年で1位のアニメとrating、合計アニメ数などをまとめます。
yearList = df["year"].unique().tolist() yearList.sort() data = [] for year in yearList: if len(df[(df["year"]==year) & (df["rating"]>0)])>0: top = df[(df["year"]==year) & (df["rating"]>0)].sort_values(by="rating", ascending=False).iloc[0] data.append({"year": year, "name": top["name"], "rating": top["rating"], "totals": len(df[(df["year"]==year) & (df["rating"]>0)])}) df_year = pd.DataFrame(data)
データが多かったのでTableでまとめます。
year | name | rating | totals | |
---|---|---|---|---|
0 | 1963.0 | Tetsuwan Atom | 7.09 | 2 |
1 | 1964.0 | Big X | 6.07 | 2 |
2 | 1965.0 | Jungle Taitei | 6.57 | 1 |
3 | 1966.0 | Mahoutsukai Sally | 6.54 | 4 |
4 | 1967.0 | Ribbon no Kishi | 6.71 | 2 |
5 | 1968.0 | Cyborg 009 (TV) | 6.87 | 3 |
6 | 1969.0 | Tiger Mask | 7.26 | 5 |
7 | 1970.0 | Ashita no Joe | 8.29 | 3 |
8 | 1971.0 | Lupin III | 7.64 | 5 |
9 | 1972.0 | Mazinger Z | 7.26 | 5 |
10 | 1973.0 | Doraemon | 7.37 | 8 |
11 | 1974.0 | Great Mazinger | 7.07 | 5 |
12 | 1975.0 | UFO Robo Grendizer | 7.53 | 13 |
13 | 1976.0 | Candy Candy | 7.54 | 10 |
14 | 1977.0 | Ie Naki Ko | 7.83 | 12 |
15 | 1978.0 | Uchuu Kaizoku Captain Herlock | 7.69 | 9 |
16 | 1979.0 | Versailles no Bara | 8.34 | 7 |
17 | 1980.0 | Ashita no Joe 2 | 8.71 | 8 |
18 | 1981.0 | Taiyou no Kiba Dagram | 7.36 | 10 |
19 | 1982.0 | Patalliro! | 7.21 | 7 |
20 | 1983.0 | Igano Kabamaru | 7.83 | 17 |
21 | 1984.0 | Hokuto no Ken | 7.97 | 14 |
22 | 1985.0 | Touch | 8.00 | 12 |
23 | 1986.0 | Maison Ikkoku | 8.20 | 15 |
24 | 1987.0 | City Hunter | 7.92 | 11 |
25 | 1988.0 | City Hunter 2 | 8.06 | 19 |
26 | 1989.0 | Dragon Ball Z | 8.15 | 14 |
27 | 1990.0 | Tanoshii Muumin Ikka | 8.19 | 10 |
28 | 1991.0 | Oniisama e... | 7.82 | 17 |
29 | 1992.0 | Yuu☆Yuu☆Hakusho | 8.45 | 15 |
30 | 1993.0 | Slam Dunk | 8.53 | 12 |
31 | 1994.0 | Ginga Sengoku Gunyuuden Rai | 7.90 | 16 |
32 | 1995.0 | Fushigi Yuugi | 7.62 | 20 |
33 | 1996.0 | Rurouni Kenshin: Meiji Kenkaku Romantan | 8.30 | 23 |
34 | 1997.0 | Kenpuu Denki Berserk | 8.53 | 27 |
35 | 1998.0 | Initial D First Stage | 8.31 | 33 |
36 | 1999.0 | Great Teacher Onizuka | 8.69 | 28 |
37 | 2000.0 | Hajime no Ippo | 8.74 | 30 |
38 | 2001.0 | Hikaru no Go | 8.08 | 39 |
39 | 2002.0 | Koukaku Kidoutai: Stand Alone Complex | 8.43 | 45 |
40 | 2003.0 | Planetes | 8.27 | 49 |
41 | 2004.0 | Monster | 8.83 | 66 |
42 | 2005.0 | Mushishi | 8.67 | 58 |
43 | 2006.0 | Gintama | 8.95 | 72 |
44 | 2007.0 | Mononoke | 8.43 | 55 |
45 | 2008.0 | Aria the Origination | 8.50 | 57 |
46 | 2009.0 | Fullmetal Alchemist: Brotherhood | 9.14 | 55 |
47 | 2010.0 | Rainbow: Nisha Rokubou no Shichinin | 8.49 | 56 |
48 | 2011.0 | Hunter x Hunter (2011) | 9.05 | 61 |
49 | 2012.0 | Gintama': Enchousen | 9.04 | 76 |
50 | 2013.0 | Hajime no Ippo: Rising | 8.58 | 66 |
51 | 2014.0 | Mushishi Zoku Shou 2nd Season | 8.74 | 86 |
52 | 2015.0 | Gintama° | 9.09 | 77 |
53 | 2016.0 | Haikyuu!!: Karasuno Koukou vs. Shiratorizawa Gakuen Koukou | 8.79 | 82 |
54 | 2017.0 | Gintama. | 8.99 | 70 |
55 | 2018.0 | Gintama.: Shirogane no Tamashii-hen - Kouhan-sen | 8.88 | 75 |
56 | 2019.0 | Shingeki no Kyojin Season 3 Part 2 | 9.08 | 74 |
57 | 2020.0 | Shingeki no Kyojin: The Final Season | 8.85 | 54 |
58 | 2021.0 | Fruits Basket: The Final | 9.04 | 58 |
59 | 2022.0 | Spy x Family | 9.09 | 27 |
最も古いものは1963年で、その年の1位は鉄腕アトムですね。
この頃は手塚治虫の作品ラッシュですね。
1991年生まれの僕でさえ知ってるくらいですから間違いなく普及の名作ですね。
最近だと銀魂とか進撃の巨人とかが強いです。
demographicごとに最高のアニメは?
次にdemographicごとに最高のアニメを探してみます。
demographicはShounen, Seinen, Shoujo, Josei, Kidsの4種類しかないので、それぞれratingの高いトップ5をみてみます。
Shounen(少年)
まずは少年です。
df[df["demographic"]=="Shounen"].sort_values(by="rating", ascending=False).head(5)[["name", "studio", "theme", "source", "rating", "year", "demographic", "rated_by", "status"]]
1位は鋼の錬金術師です。
以降、銀魂、スパイファミリー、進撃の巨人、ハンターハンターでした。
スパイファミリーは唯一オンエア中でランクインしている作品です。
Seinen(青年)
次に青年を見てみます。
df[df["demographic"]=="Seinen"].sort_values(by="rating", ascending=False).head(5)[["name", "studio", "theme", "source", "rating", "year", "demographic", "rated_by", "status"]]
1位はかぐやさまは告らせたいです。映画化もされて話題になっていましたね。
僕の好きなキングダムも入っていました。嬉しいw
Shoujo(少女)
次に少女です。
df[df["demographic"]=="Shoujo"].sort_values(by="rating", ascending=False).head(5)[["name", "studio", "theme", "source", "rating", "year", "demographic", "rated_by", "status"]]
なんか2位から5位が同じタイトルで独占されていますね。
夏目友人帳というアニメで支配されています。
全然知らない。。。
Josei(女性)
次に女性です。
df[df["demographic"]=="Josei"].sort_values(by="rating", ascending=False).head(5)[["name", "studio", "theme", "source", "rating", "year", "demographic", "rated_by", "status"]]
ちはやふるだけ知ってますねw
あとは全然知らない。。。
Kids(キッズ)
最後にキッズを見てみましょう。
df[df["demographic"]=="Kids"].sort_values(by="rating", ascending=False).head(5)[["name", "studio", "theme", "source", "rating", "year", "demographic", "rated_by", "status"]]
1位がまさかのムーミンですね。
僕の世代ではドンピシャのデジモンやポケモンも入っていました。懐かしい。
ポケモンは2015年で新しいものですけどね。
2位と3位は全くわからない。。。
studioごとの最高のアニメは?
次にstudioごとの最高のアニメを見てみます。
studioは全部で242個あるので全てを見ると多すぎますw
よってここではアニメ数が多いstudioトップ20から、それぞれのstudioで最もratingの高いアニメをまとめてみます。
studioList = list(df[df["rating"]>0]["studio"].value_counts().head(20).index) data = [] for studio in studioList: if len(df[(df["studio"]==studio) & (df["rating"]>0)])>0: top = df[(df["studio"]==studio) & (df["rating"]>0)].sort_values(by="rating", ascending=False).iloc[0] data.append({"studio": studio, "name": top["name"], "rating": top["rating"], "totals": len(df[(df["studio"]==studio) & (df["rating"]>0)])}) df_studio = pd.DataFrame(data)
ratingの数値データがきちんとあるもので絞った上で、アニメ数が多いstudioトップ20を炙り出して、それぞれでratingが最も高いアニメを出してみました。
2位がUnknownってのが残念ですが、ここにはキングダムが入っていますね。
東映アニメーションの1番はワンピースです。
僕も大好きで今でもみてるアニメの1つです。
あとはハンターハンターとか銀魂とかお馴染みのものが出てきて、さらにシャーマンキングとか東京リベンジャーズとかありますね。
みてるだけでいろいろなシーンが頭をよぎってきます。
sourceごとの最高のアニメを探す
最後にsourceごとに最高のアニメを探してみます。
sourceは全部で16種類ありました。
それぞれの1位をまとめます。
sourceList = list(df[df["rating"]>0]["source"].value_counts().index) data = [] for source in sourceList: if len(df[(df["source"]==source) & (df["rating"]>0)])>0: top = df[(df["source"]==source) & (df["rating"]>0)].sort_values(by="rating", ascending=False).iloc[0] data.append({"source": source, "name": top["name"], "rating": top["rating"], "totals": len(df[(df["source"]==source) & (df["rating"]>0)])}) df_source = pd.DataFrame(data)
圧倒的に多いのは漫画です。
その中でも頂点に立つのが鋼の錬金術師ですね。
2位以降はオリジナルやゲームなどが続いています。
そして知らないアニメばかり。。。
1つだけですがラジオがsourceになってるアニメもあることには驚きました。
まとめ
本記事では、KaggleのAnime listからデータを拝借して最高のアニメをいろいろな条件で探してみました。
お馴染みのアニメがたくさん登場してきました。
僕が幼少期にハマったアニメも色々と出てきてとても懐かしい気持ちになりました。
次回はratingが高いアニメの要素について分析していきます。
どんなジャンルのアニメの評価が高い傾向にあるのか、評価が高いアニメの共通点などを調べていきます。
ちなみに次回がアニメデータの分析記事の最後になる予定です。
ここまで読んでくださりありがとうございました。
前回の記事も合わせてご覧くださいませ。
【Kaggleでデータ分析】Pythonでアニメデータを分析する①〜データの概要把握とデータ整形〜
続きを見る