当前位置: 首页 > 后端技术 > Python

20万弹幕分析告诉你,8.9分的高分剧《隐秘的角落》到底有什么好?

时间:2023-03-26 14:17:13 Python

最近,这部电影《隐秘的角落》彻底火了。目前豆瓣评分8.9,评论人数超过45万人。一时间,张东升在剧中的一句“爬山”“你觉得我还有机会吗”在六月承包了表情包。各种表情和段子齐飞。作为秦昊当年的同学,章子怡也出来打call了。看完剧,《小白船》这首歌成了一首新的恐怖童谣,让人在脑海里循环不已,太好听了。那么这部制作精良的国产剧为何会获得观众的一致好评呢?你在看节目的时候在说什么?今天我们就用数据来告诉大家。01以拍电影的态度拍网剧。不好看。该剧改编自紫金陈的悬疑小说《坏小孩》。这展开了。扑朔迷离的案件笼罩了数个家庭,也将他们引向了不可预知的未来……剧开场,一位彬彬有礼的青年在山顶与一对老人合影。正是万丈深渊,青年上前亲自指导架势,刹那间,目光一寒,双手同时用力,将那位长老推下了山顶,甚至还装作被推后惊慌失措大喊:“爸爸!妈妈!”但这一切都被三个玩耍的孩子无意中拍到了。这一开场,让全场都惊呆了,甚至起鸡皮疙瘩。与此同时,人们也忍不住想看看故事接下来会发生什么。剧情不拖沓,演技全在线。不同于国产剧动辄40、50集,《隐秘的角落》只有短短的12集。故事紧凑,情节不马虎。整部剧中,无论是从男主角秦昊,到三位小演员,还是王景春、张颂文等演员,都贡献了无可挑剔的演技。令人印象深刻的配乐配乐也是《隐秘的角落》中的亮点之一。配合影视剧的悬疑情节,这些配乐听起来实在是太恐怖了,也给大家留下了难以磨灭的阴影。网友调侃:“你会弹杨戬的曲子吗?”如果要问这部剧的配乐为何如此讲究,你一定知道《隐秘的角落》的导演辛爽原来是个乐队音乐人。02豆瓣8.9分年度国剧之光!首先,我们看到豆瓣的数据。这部剧的豆瓣评分一开播就达到了9.0,一度达到了9.2。随着剧集完结,目前稳定在8.9,评分超过45万人。仔细观察评分分布,54.4%的人给了五星好评,其次是23.4%的人给了四星。这个成绩还是很不错的。评论趋势图从评论趋势图可以看出,《隐秘的角落》于6月16日首播,评论热度最高。之后,与其他剧不同的是,随着播出时间里评论数趋于平缓,这部剧在再次播出后也时不时带来热度,引发了观众的评论热潮。评论中提到的主要演员大家在评论中提到了哪些角色?分析发现,男主角张东升确实是讨论度最高的,其次是三位小演员之一的朱朝阳。演员王景春、张颂文饰演的陈警官和朝阳的父亲也备受关注。星级分布我们分析了豆瓣短评中用户对主演的好评/中/差的分布情况。在个人表演方面,小演员们的表现相当出色。比如朱朝阳的扮演者荣梓杉,90%以上的观众都对他的表演给予了肯定。秦昊和王景春的表演也很不错。他们在剧中的表现分别获得了88.08%和89.29%的好评。0320万弹幕告诉你大家看剧都在聊什么?接下来我们来分析一下爱奇艺上《隐秘的角落》的弹幕数据。我们对全部12集弹幕数据进行了分析整理,共计200672条。以下为分析结论:用户使用的弹幕角色观众在爱奇艺剧中发弹幕时可以选择自己喜欢的角色头像。那么观众们最喜欢用哪些角色来发弹幕呢?可以看出,张东升在这方面是高居榜首的。朱朝阳紧随其后,第三名是可爱的扑扑小姐姐。弹幕词数分布在弹幕词数中。我们可以看到最多的是5-10个字,总共有11万多条弹幕。紧接着10-15个字,48032条弹幕。0-5字的弹幕也不少,一共25420条。看得出来,大家在追剧发弹幕的时候,还是倾向于多说话,多表达自己的想法。整体弹幕词云在整体弹幕词云中,“孩子”、“颜良”、“扑扑”被提及的频率很高。看到三位年轻主角的一举一动,依然牵动着观众的心。接下来我们来看几位主角的弹幕词云。首先,张东升就是张东升,不同于一般的脸谱反派。从张东升身上,大家看到的不仅仅是他的残忍和残忍,还有他的无奈和隐忍。弹幕中,关于他的“爬山”、“机缘”的提法不少。张东升这几句话真是出圈了。有意思的是,张东升的“头发”也被频频提及,毕竟这个光头造型实在是让人印象深刻。朱朝阳接下来,我们就来看看三位年轻主演中最受关注的朱朝阳。他品学兼优,但因为父母离异,有点内向孤僻。词云中,他与“父亲”“母亲”的关系也是被讨论最多的。其次,他与“张东升”的较量,以及后来他性格的“黑化”,也是大家讨论的焦点。扑扑剧中的扑扑小姐姐,也是很多人喜欢的角色。在词云中,可以看到观众对她的“喜欢”,以及对她“演技”的肯定。此外,还经常提到“仁慈”等词。颜良剧中的另一位青年演员颜良也在弹幕中受到了很多关注。关于他,大家经常会提到和他形影不离的“扑扑”。此外,“演技好”、“棒棒哒”等词也被频繁提及。04教你用Python分析爱奇艺弹幕数据我们用Python来获取和分析爱奇艺弹幕数据。整个数据分析过程分为以下三个部分:数据读取、数据预处理、数据可视化分析,具体步骤见下:首先导入需要的包,其中pandas用于数据读取和数据处理,os用于文件操作,jieba用于中文分词,pyecharts和stylecolud用于数据可视化。`#importlibraryimportpandasaspdimportosimportjiebafrompyecharts.chartsimportBar,Pie,Line,WordCloud,Pagefrompyechartsimportoptionsasoptsfrompyecharts.globalsimportSymbolType,WarningTypeWarningType.ShowWarningdis.将爬取到的数据存放在data文件夹中,使用os操作获取需要读取的csv文件列表。`#文件列表data_list=os.listdir('../data/')data_list``['df_firstepisode.csv','df_seventhepisode.csv','df_thirdepisode.csv','df_episode9.csv','df_episode2.csv','df_episode5.csv','df_episode8.csv','df_episode6.csv'','df_11thepisode.csv','df_12thepisode.csv','df_10thepisode.csv','df_4thepisode.csv']`然后用pandas转换csv文件,循环读入追加到总表df_all中,打印如下数据集的大小,可以看到一共有200672条记录。`#storedatadf_all=pd.DataFrame()loopwriteforiindata_list:df_one=pd.read_csv(f'../data/{i}',engine='python',encoding='utf-8',index_col=0)df_all=df_all.append(df_one,ignore_index=False)打印数据集大小print(df_all.shape)`(200672,6)预览前五行数据。`#Previewdatadf_all.head()`数据读入后,接下来就是对数据集进行简单的预处理。我们对name字段进行如下处理:使用strip操作去除字符串前后的空格;定义一个转换函数,根据name字段添加一个新的name_level字段,标记用户级别。效果如下:`#字符串处理df_all['name']=df_all.name.str.strip()deftransform_name(x):ifx=='张东升'orx=='朱朝阳'orx=='普普'orx=='严良'orx=='陈冠生'orx=='周春红'orx=='朱永平'orx=='叶军':return'VIP用户'elifx=='未知用户':return'未知用户'else:return'普通用户'Newcolumndf_all['name_level']=df_all.name.apply(transform_name)df_all.head()`接下来使用pyecharts进行数据可视化。主要分析内容包括:用户最喜欢的弹幕角色-条形图弹幕发送字数分布-条形图弹幕角色-词云图首先统计不同级别的用户数。`level_num=df_all.name_level.value_counts()level_num``未知用户157722VIP用户41127普通用户1823Name:name_level,dtype:int64`使用pyecharts中的Pie类绘制饼图,效果如下:`data_pair=[list(z)forzinzip(level_num.index.tolist(),level_num.values.tolist())]绘制饼图pie1=Pie(init_opts=opts.InitOpts(width='1350px',height='750px'))pie1.add('',data_pair,radius=['35%','60%'])pie1.set_global_opts(title_opts=opts.TitleOpts(title='弹幕人群等级分布'),legend_opts=opts.LegendOpts(orient='vertical',pos_top='15%',pos_left='2%'))pie1.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}:{d}%"))pie1.set_colors(['#3B7BA9','#6FB27C','#FFAF34'])pie1.render()`name字段标记用户发送弹幕时使用的弹幕角色,统计过滤不同弹幕角色的使用频率。`root_num=df_all.name.value_counts()[1:9]ROLE_NUM``张东升18734朱朝阳8742Pop4688严良2595陈冠生2122春红1879朱永平134name:Namepe:Int64...Bar类绘制饼图.`#柱形图bar1=Bar(init_opts=opts.InitOpts(width='1350px',height='750px'))bar1.add_xaxis(role_num.index.tolist())bar1.add_yaxis("",role_num.values.tolist(),category_gap='5%')bar1.set_global_opts(title_opts=opts.TitleOpts(title="VIP用户最喜欢的弹幕角色"),visualmap_opts=opts.VisualMapOpts(max_=18734),bar1的.render()`content字段记录了用户评论的弹幕信息,这里根据该字段计算词数,按照5的步长进行分箱,得到不同词数段下的频次分布`word_num=df_all.content.apply(lambdax:len(x))bins=[0,5,10,15,20,25,30,35,40,45,50]word_num_cut=pd.cut(word_num,bins,include_lowest=False).value_counts()word_num_cut=word_num_cut.sort_index()word_num_cut``(0,5]25420(5,10]113834(10,15]48032(0,20]9,6(]2385(25,30]645(30,35]274(35,40]109(40,45]49(45,50]46Name:content,dtype:int64`也使用Bar类来绘制条形图。`#柱形图bar2=Bar(init_opts=opts.InitOpts(width='1350px',height='750px'))bar2.add_xaxis(word_num_cut.index.astype('str').tolist())bar2.add_yaxis("",word_num_cut.values.tolist(),category_gap='4%')bar2.set_global_opts(title_opts=opts.TitleOpts(title="弹幕发送词分布"),visualmap_opts=opts.VisualMapOpts(max_=113834),)bar2.render()`接下来我们定义一个分词函数get_cut_words,这个函数的作用是传入一列数据,使用jieba得到分词后的列表。`#定义分词函数defget_cut_words(content_series):#读入停用词列表stop_words=[]withopen(r"C:\Users\wzd\Desktop\CDA\CDA_Python\PythonTextAnalysis\10.TextSummary\stop_words.txt",'r',encoding='utf-8')asf:lines=f.readlines()forlineinlines:stop_words.append(line.strip())#添加关键字my_words=['秦昊'、'张东升'、'王景春'、'陈冠生'、'荣子善'、'朱朝阳'、'石鹏远'、'严良'、'王圣迪'、'普普'、'岳Pu','张颂文','朱永平','十二集','一万二千','十二小时']foriinmy_words:jieba.add_word(i)#自定义停用词my_stop_words=['true','this','this','a','that','hahaha']stop_words.extend(my_stop_words)#分词word_num=jieba.lcut(content_seriesstr.cat(sep=.'),cut_all=False)#Conditionalscreeningword_num_selected=[iforiinword_numifinotinstop_wordsandlen(i)>=2]returnword_num_selected`传递ch的弹幕数据aracter张东升进入函数并得到分词列表。`text1=get_cut_words(content_series=df_all[df_all.name=='张东升']['content'])text1[:5]从默认字典构建前缀dict...转储模型到文件缓存C:\Users\wzd\AppData\Local\Temp\jieba.cacheLoadingmodelcost1.280seconds.Prefixdicthasbeenbuilted.['climbing','brother','十二集','contentment','伊能静']`然后使用stylecloud工具包绘制心形词云,效果如下:msyh.ttc',icon_name='FASFA-HEART',SIZE=653,Output_name='./词云图/弹幕字符-张东升词云图.png')Image(FILENAME='.-张东升词云地图.png')``