全力回避フラグちゃん!の動画の再生数と評価/コメント数をグラフにしたらどうなるのか？【Python】【グラフ化】

# はじめに

今回は再生回数と評価/コメント数を同時にプロットして，どのような傾向があるかを調査・考察してみました．結果として，当たり前だけど面白い結果が得られたので記事にしてみました．
前回，前々回の記事はこちら↓↓

- [「全力回避フラグちゃん!」チャンネルの動画をグラフ化するとどうなるのか？【Python】【グラフ化】](https://qiita.com/mypsychology0/items/7f5dace26c4c375754e5)
- [全力回避フラグちゃん! の動画再生数の分布を調べてみた【Python】【グラフ化】](https://qiita.com/mypsychology0/items/1844f675717025970325)

## 注意事項
本記事で実施していることは動画から得られる情報をプロットしただけです．
また，2021/1/8 19:00時点で記録しているため，現在の情報と異なる可能性があることと，
目視で記録していたため情報に誤りがある場合がございます．ご了承ください．

# 用いたデータセット/手法
YouTube Data API v3 を使用し，2021/1/8 19:00 ごろの各動画における再生回数と高評価，低評価，コメント数を取得してmatplotlib を用いてグラフ化しました．ここにはグラフ化のプログラムは載せますが，データ取得やデータセット作成用のプログラムは関連リンクのGithub リポジトリを参照してください．

## プログラム

芸もなくPython で書いてます．
細かい制御がきくのと，扱いやすいのがいいですね．

```py:グラフ作成プログラム
import os
import sys
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import datetime
import matplotlib.dates as mdates
import matplotlib.patches as mpatches
from matplotlib.path import Path
import matplotlib
from matplotlib.font_manager import FontProperties
from matplotlib import rcParams
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()

#データセット対象のCSV ファイル
file = sys.argv[1]
output_file = sys.argv[2]
#Date, 再生回数
num_play = pd.read_csv(file, header=0, encoding='UTF8', usecols=[3, 5], parse_dates=[0])
num_play = num_play.dropna(how='all')
#Date, Like
num_like = pd.read_csv(file, header=0, encoding='UTF8', usecols=[3, 6], parse_dates=[0])
num_like = num_like.dropna(how='all')
#Date, DisLike
num_dislike = pd.read_csv(file, header=0, encoding='UTF8', usecols=[3, 7], parse_dates=[0])
num_dislike = num_dislike.dropna(how='all')
#Date, コメント数
num_comment = pd.read_csv(file, header=0, encoding='UTF8', usecols=[3, 8], parse_dates=[0])
num_comment = num_comment.dropna(how='all')

# debug
#print(num_play)
#num_play.to_csv('exam_num_play.csv')

#Plot するグラフ
#Date
x = num_play[num_play.columns[0]]
#print(type(x[0]))

#x = pd.date_range(x[0], x[218], freq='D')
#再生回数
y1 = num_play[num_play.columns[1]]
#Like
y2 = num_like[num_like.columns[1]]
#DisLike
y3 = num_dislike[num_dislike.columns[1]]
#コメント
y4 = num_comment[num_comment.columns[1]]

#フォント設定
#plt.rcParams['font.family'] = 'Times New Roman'
font_path = '/usr/share/fonts/truetype/takao-gothic/TakaoPGothic.ttf'
font_prop = FontProperties(fname=font_path)
matplotlib.rcParams['font.family'] = font_prop.get_name()

fig = plt.figure(figsize=(20.0, 12.0), dpi=300)
ax1 = fig.add_subplot()

#グラフの大きさ
#ax1.figure(figsize=(20.0, 10.0), dpi=300)

# グラフプロット
## 再生回数を棒グラフでプロット
play = ax1.bar(x, y1, width=1.0, bottom=None, color="lightblue")

## Like, Dislike, Commnetを折れ線でプロット
ax2 = ax1.twinx()
like, = ax2.plot(x, y2, color='r')
dislike, = ax2.plot(x, y3, color='b')
comment, = ax2.plot(x, y4, color='k')
        
# 軸の範囲
ax1.set_xlim('2019-11-01', x[len(x) - 1])
ax1.set_ylim([0, 3500000])
ax2.set_ylim([0, 30000])

# max(like), avg(like)
print("Max like count:" + str(max(y2)))
print("Average like count:" + str(num_like.mean(axis=0)))

# グラフタイトル
ax1.set_title("全力回避フラグちゃん! 再生回数と評価数", fontname="TakaoPGothic", fontsize=20)

# 軸メモリ
ax1.tick_params(axis='x', labelsize=20, labelrotation=45)
ax1.tick_params(axis='y', labelsize=20)
ax2.tick_params(axis='y', labelsize=20)

# ラベル名
ax1.set_xlabel("動画公開日", fontsize=20, fontname="TakaoPGothic")
ax1.set_ylabel("再生回数", fontname="TakaoPGothic", fontsize=20)
ax2.set_ylabel("評価/コメント数", fontname="TakaoPGothic", fontsize=20, rotation=270, labelpad=30)

# 凡例
play_title = "再生回数"
like_title = "高評価"
dislike_title = "低評価"
comment_title = "コメント"

plt.legend([play, like, dislike, comment], [play_title, like_title, dislike_title, comment_title], bbox_to_anchor=(1.0, 1.0), prop={"family":"TakaoPGothic", 'size':20}, markerscale=3)

#画像保存
plt.savefig(output_file, bbox_inches="tight", pad_inches=0.0)
```

#グラフ化した結果

グラフ化した結果に考察ポイントを載せています．
左縦軸は各動画の再生回数を表しており，3.0 などと書いてありますが，左上に小さく1e6 と書いてあるので，軸メモリは10^6 されます．つまり，3.0 は300万になります．Windows だと省略されずにでてきますが，Linux だとなぜかこの形で出力され，直すの面倒なのでそのままにしたままでした．

右縦軸は，高評価，低評価，コメント数の数です．こちらは省略表記ではなく，そのままの数字です．

最後に，横軸は動画の公開日，つまり日付です．

グラフは各動画の再生回数は棒グラフ，高評価数は赤折れ線，低評価数は青折れ線，コメント数は黒折れ線でプロットしています．

![図1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/989429/d42563b9-8679-648d-6391-7227479f591d.png)


# 簡単な考察
最初に，全体を俯瞰した考察ですが，高評価は面白いくらい再生回数と連動して，グラフ上でちょうど再生回数の概形をなぞるような形になっています．このことから，<b>再生回数と高評価には相関が存在し，再生回数が伸びるような動画は，こぞって視聴した方が高評価ボタンをクリックしてくれるということが分かります．</b>以前に再生回数はポアソン分布に従っているようだと記事を書きましたが，高評価も同じ概形ということは，高評価もポアソン分布であることが予測されます．

ここまでそっくりな概形であるのは，当たり前かもしれませんが，面白い結果だと個人的には思いました．

上記グラフに追記した考察ポイントに基づいて書いていきます．ただし，あくまでも本グラフをもとにした個人の主観となります．

- ① 再生回数トップを争う動画でも，高評価数には差がある
赤枠で囲った2つの動画ですが，左側が2020/2/12 公開の<b>「【アニメ】整形中毒になるとどうなるのか…生まれ変われるってホント！？【漫画動画】」</b>で，この時点で3,232,255 回再生されています．右側は2020/4/26 公開の<b>「【無痛症】痛みを感じなくなった男の末路…【アニメ】【漫画動画】」</b>で，この時点での再生回数が3,219,880 回です．この2つが300万回以上再生されており，2強です．再生回数で見ると微々たるさですが，左側が微妙に勝っています．しかし，高評価の数を見ると左側は21,456 高評価で再生回数の山に比べて高評価の数が追い付いていませんが，方や右側は27,848 高評価と再生回数のつり合いが取れています．ちなみに最高の高評価数です．

このことから，注目も高評価も集めた動画は「【無痛症】痛みを感じなくなった男の末路…【アニメ】【漫画動画】」になります．確かに，ストーリーの出来がとてもよかったですからね．私の中でも200以上ある動画のうち3本指に入るほど好きです．(もはや考察じゃない)

再生回数と高評価は連動する，再生回数の多い動画ほど連動しなかった場合のギャップが大きいことが分かりました．サンプル少ないけど

- ② 最近は高評価が上昇傾向！？
先ほどまで基本的に再生回数と高評価数は相関があり，概形をなぞるように連動すると書きましたが，最近はどうやら再生回数の上をいく高評価数が出ている傾向がみられます．(赤枠部分)
これには，2つの可能性が考えられます．

- その1: まだ動画が公開されたばかりで，高評価数はできったが，再生回数が追い付いていない
これはありうる話で，再生回数は時間が経てばさらに伸びてくるが，高評価は動画公開直後に視聴しに来るコアな視聴者しかつけないので，最初は高評価の特徴が強く出るが，時間が経つと再生回数が高評価に追いつく...かもしれないという．

- その2: チャンネルの人気の伸びが最近良いので，高評価が多くついている
でも，フラグちゃんのチャンネルは1日1,000人以上，1か月で3万人以上チャンネル登録者数を伸ばしており，急上昇に上がるような動画はあっという間に70万回以上再生されたりしています．最近のチャンネルの人気の伸びが，高評価の数の嵐を呼んでいる可能性も否定できません．

結論を言うと，時間をおいて再度結果を確認するしかありません．個人的には後者の方がうれしいです．

   - ②-1 高評価数が群を抜く最近の動画
  
最近の動画で，かなりの数の高評価数を獲得している動画があります．2020/12/22 公開の<b>「死亡フラグの1DAYルーティン【アニメ】【漫画動画】」</b>です．現時点での再生回数は平均値を超え，851,559 回と最近公開された動画の中ではかなり良い数字をたたき出していますが，高評価の数はなんと21,015 と先ほど紹介した再生回数トップの動画に次ぐ全体4位となっています．再生回数こそまだ公開されてから1か月もたっていないので他の動画と比べるとそこそこですが，基本的に再生回数と高評価は連動するので，近いうちに高評価の山に合うくらいの再生回数である250万近い再生回数に届くかもしれません．

この動画も上から数えたほうが早いくらい好きな動画の一つですね．

- ③ 低評価とコメント数も実は連動している

高評価のほうが目につきやすいのですが，低評価とコメント数もよく見ると再生回数と連動しています．高評価や再生回数の多い動画がコメント数が多くなるのは直感的だとしても，低評価も多くなるとは...そもそもどんな動画にも低評価がついていますし，どこにでもアンチや荒らしっぽい人たちはいるということですかね．そんなアンチっぽい人たちも再生回数があまり伸びない動画には興味がないのか，低評価の数は再生回数がそれほどの動画では少ないみたいです．

以上，低評価の数は高評価の数に反して少なくならず，逆に増える．理由として考えられるのは，荒らしやアンチっぽい人たちが普段から付けているから...だと思います．完全に個人の主観ですが，やっぱりコメント欄に荒らし多いですし...目につくものほど荒らし甲斐があるのかもしれません．注目をひきたいという心理ですかね．

# 簡単な結論
以上を踏まえ，今回の記事の結論です．
- 再生回数と高評価数は相関があり，概形も同じようになる
- 最近は高評価は上昇傾向にある
- 低評価数も再生回数や高評価数と比例して上昇する．(直感に反する)理由は，低評価を付けているのはファンではなく荒らしっぽい人たちだから(と推測する)

# 今後の予定
他にも何か分析やデータをプロットして面白そうなことがあったら記事を更新します．

# 今回紹介した動画
- [アニメ】整形中毒になるとどうなるのか…生まれ変われるってホント！？【漫画動画】](https://www.youtube.com/watch?v=epHRKXy0kAs)
- [【無痛症】痛みを感じなくなった男の末路…【アニメ】【漫画動画】](https://www.youtube.com/watch?v=dQl7OG62n_4)
- [死亡フラグの1DAYルーティン【アニメ】【漫画動画】](https://www.youtube.com/watch?v=HbGDXA9ElGg)

# おわりに

ここまで読んでいる人はいないと思いますが，もしいたらまずは，以下のリンクから<b>全力回避フラグちゃん!</b> チャンネルとフラグちゃんのTwitter をフォローしてください．この記事を読むより大切なことです．
大事なことなのでもう一度，<b>チャンネル登録</b>と<b>Twitter のフォロー</b>をよろしくお願いいたします．

# 関連リンク
- 全力回避フラグちゃん! https://www.youtube.com/channel/UCo_nZN5yB0rmfoPBVjYRMmw/videos
- 株式会社Plott / Plott Inc. https://plott.tokyo/#top
- フラグちゃんのTwitter https://twitter.com/flag__chan
- Github  https://github.com/uky007/flag_analysis