透過2W條評論看動漫《博人傳-火影忍者新時代》
寫在前面
日本電視動畫《BORUTO -火影新世代》(中國大陸譯名《博人傳:火影忍者新時代》)改編自岸本齊史原作並監修、池本幹雄編繪、小太刀右京編劇的同名漫畫,是《火影忍者》
系列的續篇,講述原作故事完結後漩渦鳴人之子漩渦博人
的冒險故事。動畫的後續劇情將對岸本齊史負責指令碼的劇場版《火影忍者劇場版:博人傳》作出補充 。
動畫與前作《火影忍者》《火影忍者疾風傳》一樣由Studio Pierrot(小丑社)負責製作。 時間是:2017年4月5日起每週三16:55在東京電視臺系列首播
以上內容,是我從百度百科抄襲過來的~哈哈哈哈,咱主要做的是資料分析,資料的爬取,去我的爬蟲系列的部落格裡面去看吧,裡面有相關的教程。
資料分析
作為評論的資料,咱儲存了這些資料留著備用
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 psl
psl.use('seaborn-darkgrid')
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用來正常顯示中文標籤
plt.rcParams['axes.unicode_minus']=False
複製程式碼
- 分組統計
score
打分,使用groupby(by="欄位名稱").size() # 獲取數量 - reset_index(drop=True) # 重置索引
- plt.bar #用來生成柱狀圖
- 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集必看
集數 | 評論數量 |
---|---|
65 | 4338 |
40 | 985 |
39 | 658 |
66 | 502 |
68 | 494 |
最後打算在弄一個文字圖的,後來想想下次再說,《博人傳》資料和原始碼已經給大家寫完整啦~
一星給情懷,一星給65集