What happens if you graph the number of views and ratings/comments of the video of "Flag-chan!" [Python] [Graph]

Introduction

This time, I plotted the number of views and the number of evaluations/comments at the same time to investigate and consider what kind of tendency there is. As a result, I got an interesting result, which is natural, so I wrote it as an article. Click here for the previous and previous articles ↓ ↓

-[What happens if you graph the video of the "Full power avoidance flag-chan!" Channel? [Python] Graph -I checked the distribution of the number of video views of [Full power avoidance flag-chan!] [Python] [Graph]

Notes

What we are doing in this article is just plotting the information obtained from the video. Also, since it was recorded as of 2021/1/8 19:00, it may differ from the current information. The information may be incorrect because it was recorded visually. Please note.

Dataset/method used

Using YouTube Data API v3, we acquired the number of views, high ratings, low ratings, and the number of comments for each video around 2021/1/8 19:00 and graphed them using matplotlib. The graphing program is listed here, but please refer to the related link Github repository for the program for data acquisition and dataset creation.

program

It's written in Python without any tricks. It's nice to have fine control and easy handling.

Graphing program


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 for dataset
file = sys.argv[1]
output_file = sys.argv[2]
#Date,Views
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,Number of comments
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')

#Graph to plot
#Date
x = num_play[num_play.columns[0]]
#print(type(x[0]))

#x = pd.date_range(x[0], x[218], freq='D')
#Views
y1 = num_play[num_play.columns[1]]
#Like
y2 = num_like[num_like.columns[1]]
#DisLike
y3 = num_dislike[num_dislike.columns[1]]
#comment
y4 = num_comment[num_comment.columns[1]]

#Font settings
#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()

#Graph size
#ax1.figure(figsize=(20.0, 10.0), dpi=300)

#Graph plot
##Plot the number of views in a bar graph
play = ax1.bar(x, y1, width=1.0, bottom=None, color="lightblue")

## Like, Dislike,Plot Commnet with a line
ax2 = ax1.twinx()
like, = ax2.plot(x, y2, color='r')
dislike, = ax2.plot(x, y3, color='b')
comment, = ax2.plot(x, y4, color='k')
        
#Axis range
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)))

#Graph title
ax1.set_title("Full power avoidance flag!Views and ratings", fontname="TakaoPGothic", fontsize=20)

#Axis memory
ax1.tick_params(axis='x', labelsize=20, labelrotation=45)
ax1.tick_params(axis='y', labelsize=20)
ax2.tick_params(axis='y', labelsize=20)

#Label name
ax1.set_xlabel("Video release date", fontsize=20, fontname="TakaoPGothic")
ax1.set_ylabel("Views", fontname="TakaoPGothic", fontsize=20)
ax2.set_ylabel("Evaluation/Number of comments", fontname="TakaoPGothic", fontsize=20, rotation=270, labelpad=30)

#Usage Guide
play_title = "Views"
like_title = "Highly rated"
dislike_title = "Low rating"
comment_title = "comment"

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)

#Save image
plt.savefig(output_file, bbox_inches="tight", pad_inches=0.0)

Graphed result

Consideration points are included in the graphed results. The left vertical axis shows the number of times each video has been played, and it is written as 3.0, but since it is written as 1e6 in the upper left, the axis memory is 10 ^ 6. In other words, 3.0 becomes 3 million. In Windows, it is not omitted, but in Linux, it is output in this form for some reason, and it is troublesome to fix it, so I left it as it is.

The right vertical axis is the number of high ratings, low ratings, and the number of comments. This is not an abbreviation, it is a number as it is.

Finally, the horizontal axis is the release date of the video, that is, the date.

The graph plots the number of views of each video as a bar graph, the number of high ratings as a red line, the number of low ratings as a blue line, and the number of comments as a black line.

図1.png

A brief consideration

First of all, it is a bird's-eye view of the whole, but the high evaluation is interestingly linked with the number of views, and it is in the form of just tracing the outline of the number of views on the graph. From this, it can be seen that there is a correlation between the number of views and the high rating, and that all the videos that increase the number of views will click the high rating button. I wrote an article earlier that the number of views seems to follow the Poisson distribution, but the fact that the high evaluation has the same outline means that the high evaluation also has the Poisson distribution.

It may be natural that the outline looks exactly like this, but I personally thought it was an interesting result.

I will write based on the consideration points added to the above graph. However, it is an individual subjectivity based on this graph.

―― (1) There is a difference in the number of high ratings even for videos that compete for the top number of views. The two videos are surrounded by a red frame, but the left side is "[Anime] What happens if you become addicted to plastic surgery ... Really reborn !? [Manga video]" So, at this point, it has been played 3,232,255 times. The right side is "[Painlessness] The end of a man who no longer feels pain ... [Anime] [Manga video]" released on April 26, 2020, and the number of views at this point is 3,219,880. .. These two have been played over 3 million times, which is a little over two. Looking at the number of views, it is insignificant, but the left side is slightly superior. However, looking at the number of high ratings, the number of high ratings is 21,456 on the left side, which is not catching up with the number of views compared to the peak of the number of views, but on the right side and the right side, 27,848 high ratings and the number of views are balanced. By the way, it is the highest evaluation number.

For this reason, the video that attracted attention and high praise is "[Painlessness] The end of a man who no longer feels pain ... [Anime] [Manga video]". Certainly, the story was very good. I like it so much that I can put it in three of the more than 200 videos. (No longer a consideration)

It was found that the number of views and the high evaluation are linked, and the gap between videos with a large number of views is larger when they are not linked. Although there are few samples

――② Recently, high evaluations are on the rise! ?? I wrote earlier that there is basically a correlation between the number of views and the number of high evaluations, and it is linked so as to trace the outline, but recently there seems to be a tendency for the number of high evaluations to exceed the number of views. .. (Red frame part) There are two possibilities for this.

――Part 1: The video has just been released and the number of views has been high, but the number of views has not caught up. This is a possible story, and the number of views will increase over time, but since high ratings are only given to core viewers who come to watch immediately after the video is released, the characteristics of high ratings are strong at first. , Over time, the number of views may catch up with the high evaluation.

――Part 2: The popularity of the channel has been growing recently, so it has been highly evaluated. However, Flag-chan's channel has increased the number of subscribers to more than 1,000 a day and more than 30,000 a month, and videos that seem to rise sharply have been played more than 700,000 times in a blink of an eye. I will. It is undeniable that the recent growth in popularity of channels may have caused a storm of highly rated numbers.

The bottom line is that you have to wait a while and check the results again. Personally, I'm more happy with the latter.

――②-1 Recent videos with outstanding high ratings

There are some recent videos that have received quite a few high ratings. It is "1DAY routine of death flag [animation] [manga video]" released on December 22, 2020 . At the moment, the number of views exceeds the average value, 851,559 times, which is a fairly good number among the recently released videos, but the number of high ratings is 21,015, which is the second highest number of views after the video introduced earlier. It is in 4th place. It's been less than a month since the number of views was released, so it's reasonable compared to other videos, but basically the number of views and the high rating are linked, so the number of views will soon match the high rating mountain. It may reach the number of views, which is close to 2.5 million.

This video is also one of my favorite videos as it is faster to count from the top.

――③ The low evaluation and the number of comments are actually linked.

Higher ratings are easier to see, but if you look closely at low ratings and the number of comments, they are linked to the number of views. Even if it is intuitive that a video with a high rating or a large number of views has a large number of comments, it means that a video with a high rating also has a high rating ... In the first place, every video has a low rating, and anti and vandalism everywhere. Does that mean that there are people like me? It seems that such anti-like people are not interested in videos whose views do not increase so much, and the number of low ratings is small for videos with such views.

As mentioned above, the number of low evaluations does not decrease contrary to the number of high evaluations, but conversely increases. I think the reason is that trolls and anti-like people usually wear it. It's completely personal subjectivity, but after all there is a lot of vandalism in the comment section ... It may be worth the vandalism as it is noticeable. Is it the psychology of wanting to attract attention?

Simple conclusion

Based on the above, this is the conclusion of this article. --There is a correlation between the number of views and the number of high evaluations, and the outline is the same. --Recently, high evaluations are on the rise --The low evaluation number also increases in proportion to the number of playbacks and the high evaluation number. The reason (unintuitive) is that it's not the fans who give the low rating, but the trolls (I guess).

Future plans

I will update the article if there is something else that seems interesting by plotting analysis or data.

Video introduced this time

-[Anime] What happens if you become addicted to plastic surgery ... It's true that you will be reborn! ?? [Cartoon video]](https://www.youtube.com/watch?v=epHRKXy0kAs) -[Painlessness] The end of a man who no longer feels pain ... [Anime] [Cartoon video] -Death Flag 1DAY Routine [Anime] [Manga Video]

in conclusion

I don't think anyone has read this far, but if you have any questions, please follow the Full Avoidance Flag-chan! channel and Flag-chan's Twitter from the link below. It's more important than reading this article. It's important, so please subscribe and follow us on Twitter again.

Related Links

--Full power avoidance flag-chan! Https://www.youtube.com/channel/UCo_nZN5yB0rmfoPBVjYRMmw/videos --Plott Inc. / Plott Inc. https://plott.tokyo/#top --Flag-chan's Twitter https://twitter.com/flag__chan

Recommended Posts

What happens if you graph the number of views and ratings/comments of the video of "Flag-chan!" [Python] [Graph]
What happens if you graph the video of the "Full power avoidance flag-chan!" Channel? [Python] [Graph]
I checked the distribution of the number of video views of "Flag-chan!" [Python] [Graph]
[Python] Get the number of views of all posted articles
The story of Python and the story of NaN
Count the number of Thai and Arabic characters well in Python
Get the number of views of Qiita
[Django] What to do if the model you want to create has a large number of fields
"The guy who predicts the number of views from the title of Jaru Jaru's video"
[Python] Yuriko Koike Calculate the number of votes you need exactly [matplotlib]
Calculate the shortest route of a graph with Dijkstra's algorithm and Python
If you want a singleton in python, think of the module as a singleton
Graph of the history of the number of layers of deep learning and the change in accuracy
Get the number of articles accessed and likes with Qiita API + Python
What happens if you do "import A, B as C" in Python?
[Python] Wouldn't it be the best and highest if you could grasp the characteristics of a company with nlplot?
plot the coordinates of the processing (python) list and specify the number of times in draw ()
Divides the character string by the specified number of characters. In Ruby and Python.
Visualize the timeline of the number of issues on GitHub assigned to you in Python
What you want to memorize with the basic "string manipulation" grammar of python
[Python] A program that calculates the number of updates of the highest and lowest records
An introduction to data analysis using Python-To increase the number of video views-
Get the stock price of a Japanese company with Python and make a graph
Output the number of CPU cores in Python
Python tricks: a combination of enumerate () and zip (), checking if a string can be converted to a number, sorting the string as a number
The answer of "1/2" is different between python2 and 3
ffmpeg-Build a python environment and split the video
Calculate the total number of combinations with python
Specifying the range of ruby and python arrays
Compare the speed of Python append and map
What are you comparing with Python is and ==?
What to do if you get the error "Error: opencv3: Does not support building both Python 2 and 3 wrappers" when installing openCV 3
About the * (asterisk) argument of python (and itertools.starmap)
A discussion of the strengths and weaknesses of Python
What to do if the Microsoft Store opens even if you run python on Windows
What to do if the progress bar is not displayed in tqdm of python
[Python] Representing the number of complaints from life insurance companies in a bar graph
How to install and use pyenv, what to do if you can't switch python versions
Check the processing time and the number of calls for each process in python (cProfile)
What to do if you can't hit the arrow keys in the Python interactive console
What to do if you run python in IntelliJ and end with an error
How to output the number of VIEWs, likes, and stocks of articles posted on Qiita to CSV (created with "Python + Qiita API v2")
Check if the string is a number in python
python beginners tried to predict the number of criminals
[Python] A program that counts the number of valleys
The story of Python without increment and decrement operators.
How to get the number of digits in Python
relation of the Fibonacci number series and the Golden ratio
The process of installing Atom and getting Python running
Python --Explanation and usage summary of the top 24 packages
Visualize the range of interpolation and extrapolation with python
Referencing and changing the upper bound of Python recursion
I checked out the versions of Blender and Python
Get the size (number of elements) of UnionFind in Python
How much do you know the basics of Python?
I tried to get the number of days of the month holidays (Saturdays, Sundays, and holidays) with python
What to do if you get Swagger-codegen in python and Import Error: No module named
Not surprisingly known! ?? What about the arguments of built-in functions? What school are you from? [Python]
[Python] A program to find the number of apples and oranges that can be harvested
What to do if you get `locale.Error: unsupported locale setting` when getting the day of the week from a date in Python