影评分析第2篇 《博人传-火影忍者新时代》透过2W条评论看动漫

news/2024/12/29 1:50:57/

影评分析第2篇写在前面

日本电视动画《BORUTO -火影新世代》(中国大陆译名《博人传:火影忍者新时代》)改编自岸本齐史原作并监修、池本干雄编绘、小太刀右京编剧的同名漫画,是《火影忍者》系列的续篇,讲述原作故事完结后漩涡鸣人之子漩涡博人的冒险故事。动画的后续剧情将对岸本齐史负责脚本的剧场版《火影忍者剧场版:博人传》作出补充 。

动画与前作《火影忍者》《火影忍者疾风传》一样由Studio Pierrot(小丑社)负责制作。
时间是:2017年4月5日起每周三16:55在东京电视台系列首播

在这里插入图片描述

以上内容,是我从百度百科抄袭过来的~哈哈哈哈,咱主要做的是数据分析,数据的爬取,去我的爬虫系列的博客里面去看吧,里面有相关的教程。

影评分析第2篇数据分析

作为评论的数据,咱保存了这些数据留着备用

    author # 作者content # 评论内容ctime = # 评论时间disliked # 不喜欢人数liked # 喜欢likes # 奇怪???score # 打分user_season # 在第几集打的分数

1.清洗数据

最核心的步骤来了,在分析数据以前,我们需要对数据做一些处理,空值判断,时间格式修改等内容,这部分可能会根据实际的需求发生一些变化。

import numpy as np
import pandas as pd
import datetime# 数据读取
def read_csv():file = pd.read_csv("./bore.csv",header=None,names=["author","content","ctime","disliked","liked","likes","score","user_season"])return file# 数据清洗
def clear_data():df = read_csv()#print(any(df.duplicated())) # 判断数据是否有重复#print(df.head())#print(df.isnull().any())  # 判断是否有空列#print(df[df.isnull().values==True])   # 检测空值 data = df.fillna(0)  # 空值填充 # 时间处理def get_localtime(data):time =  datetime.datetime.fromtimestamp(data['ctime']).strftime("%Y-%m-%d")return pd.to_datetime(time)df["ctime"]=df.apply(get_localtime,axis = 1)  # apply 的使用 return df# 数据分析1
def analsis1(data):print(data["author"].describe())if __name__ == '__main__':df = clear_data()analsis1(df)

2.评论最多的人?

看一下谁是这部动漫评论最多的人,这个代码非常简单,参考下面代码即可。.describe() 函数

def analsis1(data):print(data["author"].describe())
count     18535  # author总数
unique    18535 # 去除重复之后的总数
top        你的盛世   
freq          1
Name: author, dtype: object

很神奇,竟然没有人评论次数超过2 这个结论只能表示,B站允许视频评论一次?!机制的我想去测试一下,啪啪啪,打脸回来了,我竟然没有权限。

※你没有权限※

3.评论最多的人?

数据中,有分数的排布,那么我们看一下打分的柱状图吧!数据显示的1星和5星的比较多,两级分化比较严重。
在这里插入图片描述

为了确保中文显示正常,需要首先配置一下默认字体并且设置一下 matplotlib的样式

import numpy as np
import pandas as pd
import datetime
import matplotlib.pyplot as plt
import matplotlib.style as pslpsl.use('seaborn-darkgrid')
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False
  1. 分组统计score打分,使用groupby(by=“字段名称”).size() # 获取数量
  2. reset_index(drop=True) # 重置索引
  3. plt.bar #用来生成柱状图
  4. plt.text() # 生成文字
def analsis2(data):# 文章打分的柱状图score = data["score"].groupby(data["score"]).size()score = score.reset_index(drop=True)x_index = np.arange(1,6).tolist()plt.bar(x_index,score.values,0.4,color="#03a9da")# 绘制文字for xx,yy in zip(x_index,score.values):plt.text(xx,yy+0.2,str(yy),ha="center",fontsize = 10)plt.title("用户评星图表")  # 设置标题plt.xlabel("评星")  # 设置x轴标识plt.ylabel("人数")  # 设置y轴标识plt.show()

如果编写如下代码

plt.barh(x_index, score.values, 0.4, color="#03a9da")  

就会得到一个横向的条形柱状图。

4. 评论时间分布

从数据看星期二、四、六评论次数增多,很有意思的数据。
在这里插入图片描述

# 通过星期判断评论次数
def analysis3(data):data.set_index(data["ctime"],inplace=True)weeks = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]def get_weekday(data):return weeks[data["ctime"].weekday()]data["week"] = data.apply(get_weekday,axis=1)week_data = data.groupby(by="week")["author"].size()plt.bar(weeks,week_data.values,0.5,color="green")plt.show()

5. 评论月份暴漏的部分关系

我们看到在2018年7月份数据忽然升高,这背后到底有啥隐藏的秘密呢?我们继续往下看。!

在这里插入图片描述

def analysis4(data):data.set_index(data["ctime"], inplace=True)data = data.resample("M").count()["author"]  # 按照月份汇总数据data = data.to_period("M")  # 显示数据x = np.arange(0,len(data),1)fig = plt.figure(figsize=(6, 4))ax = fig.add_subplot(111)'''fig = plt.figure()ax2 = fig.add_subplot(212)'''ax.plot(x,data.values,"#03a9f4",marker="o",markersize=4)ax.set_xticks(x)  # 设置x轴标签为自然数序列ax.set_xticklabels(data.index)  # 更改x轴标签值为年份plt.xticks(rotation=60)  # 旋转90度,不至太拥挤plt.title('博人传评论数量变化(201709-201812)', color="#03a9f4", fontsize=12)plt.xlabel("月份")plt.ylabel('评论数量')plt.tight_layout()  # 自动控制空白边缘plt.show()

过滤2018年7月份的数据出来,发现在2018年7月20日的时候,出现了一个评论峰值,在进行细致的分析,咱看一下数据。
在这里插入图片描述

看到这个数据之后,虽然我没看博人传,但是,我知道了 65集肯定好看,而且很有可能在7月20日更新的就是这1集,好奇心起来的你,或者你是一个火影迷,你可以去看看这一集~! 我翻到评论,引用了一个置顶评论

	本集是值得国人观众特别期待的一集,因为这一话(第65集)是由国人原画师黄成希全权负责的,他一个人包揽了本集的分镜/演出/作画导演等主要工作。换而言之,黄成希作为中国画师获得了本集的作监资格。这在火影忍者开播16年以来是史无前例的。十几年前,黄成希在火影忍者刚刚开播时,也和多数人一样仅仅只是屏幕前的看客,但是这部作品对学生时代的他施加了巨大的影响,最终促使黄成希走上了成为动画画师的道路。在2012年加入日本动画行业后,他如愿以偿成为了火影忍者的主力原画之一,并参与作画监督的工作。除此之外他还先后加入过包括黑子的篮球、妖怪手表和刀剑神域剧场版等多部作品的制作,实力得到了业内的认可,因此才最终获得了独自扛下重要打斗回的资格,如此说来也算是圆梦成功。由于本集几乎是黄成希的个人秀,再加上这一话中大筒木桃式使用了漫画版而不是剧场版中的新形象,因此黄成希在作画上自由发挥的空间就变得很大,这就有余地在打斗中融入太极和咏春等中国传统武术了。所以大伙看到一连串的“中国功夫”也别觉得奇怪哈~说起来,大筒木一族本身就有一股浓厚的道家派头,他们不仅历史悠久,文明程度远远超越这个世界的人,而且全族都在种灵根,吃仙桃,修金丹,求长生不老。现在再配合一整套中国武学架子,简直给人一种徐福手下三千童男童女入蓬莱求仙药的即视感...将来出一个徐福式的修仙族长也是极好的!(大误)黄成希在博人传中的几段作画(可能有遗漏):博人vs木叶丸博人vs花火博人vs鵺小樱vs信巳月vs尸澄真

在这里插入图片描述

def analysis5(data):data = data.set_index('ctime')  # 将时间作为索引data = data["2018-07-01":"2018-08-01"]child_data = data.resample("D").count()["content"]print(child_data.to_period("D"))data = data['2018-07-20':"2018-07-20"]print(data["content"])

6. 评论最多的集数

其实有上面的分析,我们已经知道了,65集肯定是评论最多的了,但是我们还是要用数据看一下

def analysis6(data):data = data.groupby(by="user_season").size()data = data.sort_values(ascending=False)print(data.head())

没问题,65集必看

集数评论数量
654338
40985
39658
66502
68494

最后打算在弄一个文字图的,后来想想下次再说,《博人传》数据和源码已经给大家写完整啦~

一星给情怀,一星给65集


http://www.ppmy.cn/news/314511.html

相关文章

一个普通的线程池

一个普通的线程池 线程池的概念和作用线程池的工作原理线程池的参数和配置自己实现一个高可用线程池 线程池是并发编程中常用的一种技术,它可以有效地管理和复用线程,提高系统的性能和资源利用率。在深入讲解线程池的原理之前,我们先了解一下…

汇总各种数据库越权操作的错误码

DB2数据库: 错误码: 01548 命名的授权ID缺少在命名的DB2对象上执行命名操作的权限 01542 命名的授权ID缺少执行命名操作的权限 01516 已经被授权该PUBLIC,因此WITH GRANT OPTION不可用 postgress数据库: 错误信息“Error 4…

Mac环境Royal TSX 从入门使用代替X sheet

Royal TSX 是一款 macOS 下可用的远程连接软件,类似于 Windows 系统的 XShell 。免费版最多支持 10 个连接,对于个人开发而言,已经足够了 一、下载安装 Royal TS 官网:https://www.royalapps.com/ts/win/download 选择 Royal T…

使用西储大学轴承故障数据遇到了一些问题,望道友指点迷津!

在网上下载了西储大学的轴承故障数据,也看了很多的说明但还是有几点不懂,望有道友指点! 1.为什么在12k_Drive_End_B007_0_118文件用MATLAB打开时,里面又会有X118_BA_time、X118_DE_time、X118_FE_time、X118RPM。我知道X118RPM是指…

x++,x--,++x,--x

1,x和x在单独使用时没有区别 测试代码: int m2,n2; m; n; printf("%d\n%d",m ,n);输出结果:3 3 2,但当在其他代码中时会有区别 int m,n; m0; n m; printf("%d\n%d\n", n, m); printf("%d\…

Ricoh Theta X 评测

Theta X 是围绕两个 48MP 传感器和双镜头构建的,它们可以一起捕捉 60MP 球面照片或 5.7K/30p 视频。但其他 Theta 相机的可用性升级,如旗舰产品 Theta Z1,包括一个方便的 2.25 英寸触摸屏、可更换电池和可扩展内存。Ricoh Theta X更多使用感受…

怎么把.mat 转化成.csv格式

怎么把.mat 转化成.csv格式 首先load(‘yourfilename’) 其中yourfilename是matlab中的文件 然后再使用csvwrite(‘filename.csv’,yourfilename) 具体步骤如下: 1、 2、这里把X118_DE_time,转化成X118.csv文件 3、之后就转化成了X118.csv