1.分析目的与背景
在选择对一类视频进行数据分析的时候,主要有以下几个目的:
1.如何判断每个视频质量的好坏?
答:在视频数据上分析,可能取决于评论数、观看数、弹幕数、收藏数、分享数、用户是否完整观看整个视频(完播率),用户平均观看时长等指标。在视频内容本身分析,可能取决于视频内容定位是否明确、是否关注当前热点话题、表达的主题是否完整、能给用户带来什么价值、目标用户是谁、视频内容本身是否制作优良等方面分析。
注:本次分析的数据只能获取到评论数、观看数、弹幕数、收藏数、分享数这些数据,即网页上能看得到的内容,而完播率、活跃率、用户观看时长、付费转化率等那些数据只能从每个up主后台记录或者是b站工作人员那里得到了,这里不做讨论。
2.视频的发布时间对于受众情况有无影响?
答:分析不同发布时间情况下每条视频的数据。
3.……
本次针对视频进行数据分析的对象是B站与原神相关的视频,因为作者对原神这个游戏比较感兴趣,所以以此为切入点,尝试在视频数据上分析B站关于原神这类视频的受众情况,此处不考虑视频内容本身。
2.获取数据
本次分析研究使用的数据库为MySQL80,其间使用了python3作为辅助数据处理,数据抓取来源自八爪鱼采集器,采集数目为1000条,仅供学习数据分析使用,不作任何商业用途。

3.整理数据导入MySQL库
在八爪鱼采集器上采集数据后(csv文件),用python里的两个库来读取csv文件、简单清洗数据后以dataframe的格式导入MySQL。
采集中可能出现的问题:
up主、粉丝数等为空:可能是采集时up主正在直播,点金头像会跳到直播间而不是个人主页,无法采集up主信息。分享数为‘分享’表示分享数为0。投币、收藏同理。后续按照这个对数据进行处理。


可以看到有很多我们用不上的字段,在python里直接选取需要的数据。

发现数据中有很多换行符,直接删除空格。

接着用python把一些不需要的字符串(如:总数、万、分享、投币)删掉或更改,并将数据改为数字格式(原来都是字符串格式)。
时间格式我们只考虑小时。

接下来就是把数据导入MySQL数据库了,其中root部分是数据库密码,test是数据库名,第一个参数是表名。



4.数据清洗
虽然在python里已经清洗过数据了,但是在MySQL中我们可以看出还有一些问题。
表名:yuanshen_new,唯一标识:id
重复值处理
首先可以看到title是有重复值的,这是因为数据抓取时b站也是动态变化的,翻页时顺序会变化,有的视频就会抓取多次。
这里直接删除重复数据:(实际应用上数据库中不可以删除数据,一般没有权限。这里只是因为数据量少作为学习使用,所以就删了方便研究。第一行是为能够执行删除命令而写,最好是留了一个副本再这样做。也可以不删除,用distinct筛选)
SET SQL_SAFE_UPDATES = 0;
delete from yuanshen_new where id not in (select a.id from (select min(id) as id from yuanshen_new group by title)a);

(2)缺失值处理
因为看到很多列都是有缺失值的(sql中为null),fans中有缺失值是因为抓取数据时如果刚好up主在直播,点头像会跳转到直播间而不是空间,所以无法获取粉丝数目。
统计后发现这种情况还不少,所以不进行删除操作了,缺失值全部赋值为1。
(这种操作原则上也是不允许的,但是这里为了后续研究所以更改了。)
update yuanshen set fans = 1 where id in (select a.id from (select id from yuanshen where fans is null)a);
(备注:后续直接在python里处理缺失值了,这里就删掉了)
5.数据分析
现在我们对刚开始提出的问题作解答。
(1)查看按时间分组,播放量前三的视频
select * from (select s_time,title,duration,play,row_number() over(partition by s_time order by play desc) as play_rank from yuanshen_new)a where a.play_rank <=3;

其余数据同理。
(2)如何判断每个视频质量的好坏?
在视频数据上分析,点赞数、观看数、弹幕数、收藏数、分享数、硬币数(特指b站视频),有这些指标。
观看数能反映该视频是否紧跟热点、标题/封面是否具有吸引力,也就是说在用户还没点进去看视频内容的时候的第一印象。
但是观看数不一定能表明用户喜欢这个视频,有可能是看到比较热门,或者仅仅是标题封面很吸引人所以点进去了。
故在此我们设定一个指标,即点赞转化率、弹幕转化率、收藏转化率、分享转化率、投币转化率。分子分别是点赞数、弹幕数、收藏数、分享数、投币数,分母是观看数。这样得到的比率即各个功能的转化情况,该比率的高低可以表示观看的用户中到底有多少人点赞、分享转发等。
(这里各个功能没有上一级下一级关系,比如:并不是只有点赞了才能转发,所以分母只能是观看人数)
查看按时间分组,各个转化率前三的视频
select id,duration,title,s_time, (barrage/play) as barrage_rate, (conis/play) as coins_rate, (collection/play) as collection_rate, (click/play) as click_rate, (share/play) as share_rate from yuanshen_new;


不按照时间分组:

这些转化率的指标可以在一定程度上代表这个视频的优劣。
(3)发布时间是否会影响受众情况?
选取发布时间、平均观看数作为指标时
select s_time,avg(play) from yuanshen_new group by s_time order by avg(play) desc;

可以看出在中午12点、凌晨1点和早上8点时发布的视频平均观看人数最多。而凌晨2点、4点、6点发布视频的平均观看人数最少。

如果仅仅分为:凌晨、上午、下午和晚上呢?
alter table yuanshen_new add column date varchar(20) not null; update yuanshen_new set date = '上午' where s_time between 7 and 12; update yuanshen_new set date = '凌晨' where s_time between 0 and 6; update yuanshen_new set date = '下午' where s_time between 13 and 18; update yuanshen_new set date = '晚上' where s_time between 19 and 24;
select id,duration,title,s_time,play,
CASE WHEN s_time between 7 and 12 THEN '上午'
WHEN s_time between 0 and 6 THEN '凌晨'
WHEN s_time between 13 and 18 THEN '下午' ELSE '晚上' END as date_m
from yuanshen_new;


可以看出视频发布时间在上午时(7-12点),平均观看人数最多。
6.结论
经过以上的数据分析,我们可以得出以下几个结论:
1.播放量取决于很多因素,比如:up主的粉丝数、视频标题、视频封面、视频内容是否关注近期热点、是否吸引人眼球、是否获得网站推荐等。但是判断视频的优劣也可以参考点赞转化率、投币转化率、收藏转化率和分享转化率。这些指标也能体现视频进一步的质量。
另一方面来说,如果没有播放量(即曝光),点赞数、弹幕数和转发数等都寥寥无几,所以也要采取适当的技巧,提高曝光率,比如说视频内容贴近热点,视频封面、标题吸引人眼球,当然也要注意视频的内容质量。
2.视频的发布时间对于受众情况也有很大影响。如果在中午、凌晨的时间发布,观看人数明显提高。但是如果在下午(比如上班、上学时间)发布,看得人就比较少。所以在发布相关视频时,也要注意发布时间,以便能够更好地提高曝光率。