大家好胚吁,我是【Python當(dāng)打之年】
本期我們通過(guò)分析20000+條影評(píng)數(shù)據(jù)宪郊,分析一下《白蛇2:青蛇劫起》這部動(dòng)漫的觀影情況申尼,看看大家對(duì)國(guó)產(chǎn)動(dòng)漫都有哪些看法敲茄,希望對(duì)小伙伴們有所幫助读处。
涉及到的庫(kù):
Pandas— 數(shù)據(jù)處理
Pyecharts— 數(shù)據(jù)可視化
jieba— 分詞
collections— 數(shù)據(jù)統(tǒng)計(jì)
可視化部分:
Line— 折線圖
Bar— 柱狀圖
Pie— 餅狀圖
Calendar— 日歷圖
WordCloud— 詞云圖
Geo— 地圖
《白蛇2:青蛇劫起》****劇情簡(jiǎn)介:
主要講述南宋末年排拷,小白為救許仙水漫金山,終被法海壓在雷峰塔下缺前。小青則意外被法海打入詭異的修羅城幻境蛀醉。幾次危機(jī)中小青被神秘蒙面少年所救,小青帶著出去救出小白的執(zhí)念歷經(jīng)劫難與成長(zhǎng)衅码,同蒙面少年一起尋找離開(kāi)辦法的故事拯刁。
感興趣的小伙伴也可以看一下第一部:《白蛇:緣起》,兩部都不錯(cuò)的逝段。
好了垛玻,進(jìn)入正題。
1. 導(dǎo)入模塊
import jieba
import stylecloud
import pandas as pd
from PIL import Image
from collections import Counter
from pyecharts.charts import Geo
from pyecharts.charts import Bar
from pyecharts.charts import Line
from pyecharts.charts import Pie
from pyecharts.charts import Calendar
from pyecharts.charts import WordCloud
from pyecharts import options as opts
from pyecharts.commons.utils import JsCode
from pyecharts.globals import ThemeType,SymbolType,ChartType
2. Pandas數(shù)據(jù)處理
2.1 讀取數(shù)據(jù)
df= pd.read_excel("白蛇2.xlsx")
df.head()
結(jié)果:
2.2 數(shù)據(jù)大小
df.shape
(20584, 6)
一共有20584條影評(píng)數(shù)據(jù)奶躯,數(shù)據(jù)時(shí)間分布2021-8-01至2021-08-31帚桩。
2.3 查看索引、數(shù)據(jù)類(lèi)型和內(nèi)存信息
df.info()
用戶(hù)名存在一條缺失嘹黔,其他各列數(shù)據(jù)完整账嚎,本次分析未用到該數(shù)據(jù),所有暫不處理儡蔓。
3. Pyecharts數(shù)據(jù)可視化
3.1 評(píng)分等級(jí)分布
代碼:
color_js = """new echarts.graphic.LinearGradient(0, 0, 1, 0,
[{offset: 0, color: '#009ad6'}, {offset: 1, color: '#ed1941'}], false)"""
df_star = df.groupby('評(píng)分')['評(píng)論'].count()
df_star = df_star.sort_values(ascending=True)
x_data = [str(i) for i in list(df_star.index)]
y_data = df_star.values.tolist()
b1 = (
Bar()
.add_xaxis(x_data)
.add_yaxis('',y_data,itemstyle_opts=opts.ItemStyleOpts(color=JsCode(color_js)))
.reversal_axis()
.set_series_opts(label_opts=opts.LabelOpts(position='right'))
.set_global_opts(
yaxis_opts=opts.AxisOpts(name='評(píng)分等級(jí)'),
xaxis_opts=opts.AxisOpts(name='人/次'),
title_opts=opts.TitleOpts(title='評(píng)分等級(jí)分布',pos_left='45%',pos_top="5%"),
legend_opts=opts.LegendOpts(type_="scroll", pos_left="85%",pos_top="28%",orient="vertical")
)
)
df_star = df.groupby('評(píng)分')['評(píng)論'].count()
x_data = [str(i) for i in list(df_star.index)]
y_data = df_star.values.tolist()
p1 = (
Pie(init_opts=opts.InitOpts(width='800px', height='600px'))
.add(
'',
[list(z) for z in zip(x_data, y_data)],
radius=['10%', '30%'],
center=['65%', '60%'],
label_opts=opts.LabelOpts(is_show=True),
)
.set_colors(["blue", "green", "#800000", "red", "#000000", "orange", "purple", "red", "#000000", "orange", "purple"])
.set_series_opts(label_opts=opts.LabelOpts(formatter='評(píng)分郭蕉: {c} \n (076rvjl%)'),position="outside")
)
b1.overlap(p1)
b1.render_notebook()
效果:
可以看到,5.0的評(píng)分占比達(dá)到了56%喂江,超過(guò)了半數(shù)觀眾打出了五星好評(píng)召锈,四星以上好評(píng)更是達(dá)到了85%之多,看來(lái)大家對(duì)這部動(dòng)漫還是比較認(rèn)可的获询。
3.2 每日評(píng)論量
2021.08.01-2021.08.31 每天評(píng)論量分布:
代碼:
df_day = df.groupby(df['評(píng)論時(shí)間'].dt.day)['評(píng)論'].count()
day_x_data = [str(i) for i in list(df_day.index)]
day_y_data = df_day.values.tolist()
line1 = (
Line(init_opts=opts.InitOpts(bg_color=JsCode(color_js)))
.add_xaxis(xaxis_data=day_x_data)
.add_yaxis(
series_name="",
y_axis=day_y_data,
is_smooth=True,
is_symbol_show=True,
symbol="circle",
symbol_size=6,
linestyle_opts=opts.LineStyleOpts(color="#fff"),
label_opts=opts.LabelOpts(is_show=True, position="top", color="white"),
itemstyle_opts=opts.ItemStyleOpts(
color="red", border_color="#fff", border_width=3
),
tooltip_opts=opts.TooltipOpts(is_show=False),
areastyle_opts=opts.AreaStyleOpts(color=JsCode(area_color_js), opacity=1),
)
.set_global_opts(
title_opts=opts.TitleOpts(
title="八月每日評(píng)論量",
pos_top="5%",
pos_left="center",
title_textstyle_opts=opts.TextStyleOpts(color="#fff", font_size=16),
),
xaxis_opts=opts.AxisOpts(
type_="category",
boundary_gap=True,
axislabel_opts=opts.LabelOpts(margin=30, color="#ffffff63"),
axisline_opts=opts.AxisLineOpts(is_show=False),
axistick_opts=opts.AxisTickOpts(
is_show=True,
length=25,
linestyle_opts=opts.LineStyleOpts(color="#ffffff1f"),
),
splitline_opts=opts.SplitLineOpts(
is_show=True, linestyle_opts=opts.LineStyleOpts(color="#ffffff1f")
),
),
yaxis_opts=opts.AxisOpts(
type_="value",
position="left",
axislabel_opts=opts.LabelOpts(margin=20, color="#ffffff63"),
axisline_opts=opts.AxisLineOpts(
linestyle_opts=opts.LineStyleOpts(width=2, color="#fff")
),
axistick_opts=opts.AxisTickOpts(
is_show=True,
length=15,
linestyle_opts=opts.LineStyleOpts(color="#ffffff1f"),
),
splitline_opts=opts.SplitLineOpts(
is_show=True, linestyle_opts=opts.LineStyleOpts(color="#ffffff1f")
),
),
legend_opts=opts.LegendOpts(is_show=False),
)
)
效果:
每天評(píng)論量在8月1日達(dá)到峰值(數(shù)據(jù)不包含7月份)涨岁,隨著時(shí)間的推移評(píng)論數(shù)量逐漸減少拐袜,這也符合一般電影觀影規(guī)律。
3.3 每小時(shí)評(píng)論量
統(tǒng)計(jì)的是2021.08.01-2021.08.31這31天每小時(shí)天評(píng)論量總和(如果感興趣可以單獨(dú)查看某一天24小時(shí)影評(píng)數(shù)量分布梢薪,按日期篩選即可):
從小時(shí)分布來(lái)看阻肿,大家一般選擇在下午到晚上評(píng)論的比較多,尤其是在17:00以后沮尿,大家在工作時(shí)段還都是比較敬業(yè)的丛塌。第二次評(píng)論峰值在22:00,這個(gè)時(shí)間段是熬夜青年比較活躍的時(shí)段畜疾,小伙伴們的作息時(shí)間都比較靠后赴邻。
3.4 一周各天評(píng)論量
統(tǒng)計(jì)的是2021.08.01-2021.08.31這31天每周各天評(píng)論量的總和:
從一周各天數(shù)據(jù)分布來(lái)看,每周一和每周天是大家評(píng)論的活躍時(shí)段啡捶,很有意思姥敛,一周的開(kāi)始和一周的結(jié)束,在休閑中開(kāi)始瞎暑,在休閑中結(jié)束彤敛。
3.5 日歷圖
日歷圖可以更直觀的看到一個(gè)月內(nèi)每天和每星期的評(píng)論量:
3.6 角色熱度
主要人物:小白、小青了赌、許仙墨榄、法海、司馬勿她、孫姐袄秩、牛頭幫主、蒙面男子逢并、寶青坊主之剧、書(shū)生等:
3.7 觀眾地域分布
從地域分布圖來(lái)看,觀眾主要分布在北京砍聊、天津背稼、上海、重慶玻蝌、四川蟹肘、廣東、云南等地灶伊。
3.8 影評(píng)詞云
篇幅原因疆前,部分代碼未完全展示寒跳,如果需要可在下方獲取聘萨,可在線運(yùn)行(含全部代碼):
https://www.heywhale.com/mw/project/6132e5898608050017004a5f
文章首發(fā) 公眾號(hào):Python當(dāng)打之年,每天都有python編程技巧推送童太,希望大家可以喜歡米辐。
以上就是本期為大家整理的全部?jī)?nèi)容了胸完,趕快練習(xí)起來(lái)吧,原創(chuàng)不易翘贮,喜歡的朋友可以點(diǎn)贊赊窥、收藏也可以分享(注明出處)讓更多人知道。