查看原文
其他

对《陈情令》的数据可视化分析

爬虫俱乐部 Stata and Python数据分析 2022-03-15


本文作者:钱梦璇

文字编辑:余术

技术总编:张   邯


重磅!!!为了大家能够更好地学习Python技术,以及应广大粉丝和往期学员的要求,2019年11月29日-12月1日,武汉字符串数据科技有限公司将在湖北武汉举办《第四期Python编程技术培训》。本次培训采用理论与案例相结合的方式,旨在帮助零基础学员轻松入门Python,由浅入深学习和掌握Python的编程技术,特别是网络数据抓取技术。目前正在火热招生中~

详细培训大纲及报名方式,请点击《2019年Python第四期培训招生》或点击文末阅读原文呦~



“我想带一人回云深不知处,带回去,藏起来……”,“姑苏一杯倒,夷陵见狗怂,云梦起名废,清河三不知”。这个夏天,《陈情令》的陪伴带给了大家很多欢乐和感动,小编身边的很多人都开启了二刷三刷模式,剧情完结后也仍三番五次的上热搜,这使小编对这部网剧的数据信息产生了极大的兴趣。今天将带领大家利用《陈情令》的数据信息来实现数据可视化,由于这次的数据涉及男女占比、年龄占比的问题,所以我们使用饼图进行展示。相对于柱状图,饼图能够更好地表现百分比类的数据,直观地展示占比大小的情况。


之前的文章中(实战演练-明星微博热搜次数的数据可视化),我们学习了柱状图的绘制方法,温故而知新,先来画一个柱状图(数据来源:艾漫数据):
# 导入所需要的第三方库from pyecharts.charts import Barfrom pyecharts import options as optsfrom pyecharts.globals import ThemeType #引入主题
首先,创建实例。其中,InitOpts是初始化配置项,在此引入它是为了改变图表的主题,theme=ThemeType.LIGHT)将默认的图表主题改为“LIGHT”:
bar=Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))

然后添加相应的数据:

bar.add_xaxis(["魏无羡","蓝忘机","江澄","温情","江厌离","温宁","金陵","蓝思追","薛洋","金光瑶"]) #加入横坐标参数bar.add_yaxis("角色热度占比(百分数)",[33.3,15.8,11.8,8.3,7.2,6.5,5.9,1.8,1.7,1.6],category_gap ="35%") #加入纵坐标参数bar.add_yaxis("角色好评率(百分数)",[87.0,84.7,72.1,68.2,73.2,85.2,68.6,69.4,50.1,45.9]) #角色好评率的数据不全,在此添加一些数据仅为图形展示

然后,配置图表的属性,TitleOpts为标题配置项;LegendOpts为图例配置项,pos_top设定了图例组件离容器上侧的距离,top的值可以是如10这样的具体像素值,也可以是如10%这样的相对于容器高度的百分比,也可以是“top”、“middle”、“bottom”,这时组件会根据这三个设定自动对齐。同样的,pos_left,pos_right,pos_bottom可以分别设定图例组件距离容器左侧、右侧以及下侧的距离。

bar.set_global_opts(title_opts=opts.TitleOpts(title= "《陈情令》角色表现",subtitle = "2019.06.27-2019.08.15"),legend_opts=opts.LegendOpts(pos_top="10%"))
之前我们通过bar.render(path)将生成的图表保存在一个路径下,然后再利用浏览器打开。我们为了方便,可以直接通过bar.render_notebook()在Jupyter Notebook中渲染图表。
bar.render_notebook()
得到的图表如下所示:

可见,两大男主魏无羡和蓝忘机的热度稳居前二,但最受的欢迎的角色是魏无羡和温宁小可爱。
接下来,我们利用饼图对此剧观众的性别及年龄比例进行分析。
先导入饼图的库,同引入柱状图的方法相同,所有的图形都通过from pyecharts.charts import ...引入:
from pyecharts.charts import Pie #引入饼图
由于饼状图中的扇形是由一个对象对应一个数据组成,故通过元组及列表[("女","87.06"),("男","12.94")]的形式添加数据。LabelOpts为标签配置项,formatter="{b}:{c}%"为标签内容格式器,形式为字符串模板,模板变量有 {a}, {b},{c},{d},{e},分别表示系列名,数据名,数据值等。在不同的图表类型下它们的含义不一样,在饼状图中{b}为数据项名称,{c}表示数值。
Pie = ( Pie() .add("",[("女","87.06"),("男","12.94")]) .set_global_opts(title_opts=opts.TitleOpts(title="观众性别比例")) .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}:{c}%")) )Pie.render_notebook()
生成的饼图如下所示:

可见,女性对《陈情令》的关注度更高。
 
再对受众性别比例进行分析,把饼图进一步复杂化
首先,在add选项中center=["35%","50%"]设定了饼图的中心(圆心)坐标,“35%”为横坐标,“50%”为纵坐标,设置成百分比时第一项是相对于容器宽度,第二项是相对于容器高度;is_clockwise=False表示饼图的扇区按逆时针排布,默认的True表示按顺时针排布。其次,set_colors(["yellow","red","pink","orange","green","blue"])分别设定了一系列label的颜色,与添加的数据是一一对应的。最后改变一下饼图的位置,上文生成柱状图时讲过,LegendOpts 配置项中pos_left设定了图例组件距离容器左侧的距离,改变位置后饼图就不会像上图那样距离标题太远。
v1=["0-17","18-24","25-34","35-44","45及以上"]v2=["1.20","43.41","49.66","4.57","1.16"]Pie = ( Pie() .add("",[list(z)for z in zip(v1,v2)],center=["35%","50%"],is_clockwise=False) .set_colors(["yellow","red","pink","orange","green","blue"]) .set_global_opts(title_opts=opts.TitleOpts(title="观众年龄比例"),legend_opts=opts.LegendOpts(pos_left="15%")) .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}:{c}%")) )Pie.render_notebook()
渲染图形如下所示:

由饼图可以发现25-34以及18-24岁的观众占绝大部分比例,说明《陈情令》这部网剧更受年轻人的喜欢。

对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
往期推文推荐

        实战演练-明星微博热搜次数的数据可视化

stata绘制热力图详解
《少年的你》影评
集合常用方法小结
实战演练-爬取深交所年报
      重建“通天塔” —— Unicode编码与解码
输出分组描述性统计表的利器——report
字典常用操作小结
XPath Helper助XPath爬虫一臂之力
查找变量?用“codebook”!
distinct命令用法一览
Stata数据分析技术应用培训
玩转Python之“手把手”教你爬数据(一)
玩转Python之“手把手”教你爬数据(二)
labelsof和labelbook介绍
Statalist上的“火云邪神”
爬虫实战程序的函数封装
Zipfile(二)

关于我们

微信公众号“Stata and Python数据分析”分享实用的stata、python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。

此外,欢迎大家踊跃投稿,介绍一些关于stata和python的数据处理和分析技巧。
投稿邮箱:statatraining@163.com
投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存