透過2W條評論看動漫《博人傳-火影忍者新時代》

寫在前面

日本電視動畫《BORUTO -火影新世代》(中國大陸譯名《博人傳:火影忍者新時代》)改編自岸本齊史原做並監修、池本幹雄編繪、小太刀右京編劇的同名漫畫,是《火影忍者》系列的續篇,講述原做故事完結後漩渦鳴人之子漩渦博人的冒險故事。動畫的後續劇情將對岸本齊史負責腳本的劇場版《火影忍者劇場版:博人傳》做出補充 。app

動畫與前做《火影忍者》《火影忍者疾風傳》同樣由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() 函數spa

def analsis1(data):
    print(data["author"].describe())
複製代碼
count     18535  # author總數
unique    18535 # 去除重複以後的總數
top        你的盛世   
freq          1
Name: author, dtype: object
複製代碼

很神奇,居然沒有人評論次數超過2 這個結論只能表示,B站容許視頻評論一次?!機制的我想去測試一下,啪啪啪,打臉回來了,我居然沒有權限。3d

※你沒有權限※

3.評論最多的人?

數據中,有分數的排布,那麼咱們看一下打分的柱狀圖吧!數據顯示的1星和5星的比較多,兩級分化比較嚴重。 code

在這裏插入圖片描述

爲了確保中文顯示正常,須要首先配置一下默認字體而且設置一下 matplotlib的樣式cdn

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
複製代碼
  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. 評論時間分佈

從數據看星期2、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集

相關文章
相關標籤/搜索