当前位置:   article > 正文

python晋江文学城数据分析——简单的可视化(pyecharts)

python晋江文学城数据分析——简单的可视化(pyecharts)

        本节用pyecharts对一些非数值的数据进行初步的较为简单的可视化。

 1饼图

1.1代码

  1. #以性向为例
  2. group1 = data.groupby(['性向']).count().sort_values('作品',ascending=False)
  3. c = (
  4. Pie(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
  5. .add("", [list(z) for z in zip(group1.index.tolist(), group1['作品'].tolist())],radius=130) # zip函数两个部分组合在一起list(zip(x,y))-----> [(x,y)]
  6. .set_global_opts(title_opts=opts.TitleOpts(title="Pie-性向")) # 标题
  7. .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}({d}%)")) # 数据标签设置
  8. )
  9. c.render_notebook()

1.2结果

1.2.1性向

       言情占半数,纯爱占近4成,百合和无CP共占一成,百合比无CP略高,女尊几乎可忽略不计。目前看来,作为所谓小众题材的纯爱作品数虽然不及言情,但声量也不小,而百合、无CP、女尊在晋江较为小众。

        由于女尊数量过少,分析不具有普遍性,接下来展开分析主要针对其他四个性向。

1.2.2原创性

        从左到右,从上往下依次是言情、纯爱、百合、无CP。

        可以看到,言情和纯爱的原创衍生比基本在8:2,而百合的原创达到98.37%,基本都是原创。而无CP则与前三者相反,衍生文学反而是大头,占比56.82%。后续可借助其他数据对无CP的衍生较多的原因进行一个分析。

1.2.3时代

        从左到右,从上往下依次是言情、纯爱、百合、无CP。  

        四种性向都是近代现代占比高,百合占比更是高达64.75%,剩下三者也均在54%-58%之间。其他也是以架空历史、幻想未来、古色古香依次递减。稍有所不同的是,相较其他二者,言情和无CP的架空历史占比较高,都在30%左右,纯爱和无CP的幻想未来占比较高,在15%左右。

1.2.4类型

         从左到右,从上往下依次是言情、纯爱、百合、无CP。

        除了无CP外,其他三个性向均是爱情占比最大,百合占比更是将近90%,言情和纯爱在70%上下,有点奇怪的是无CP里爱情也能占比到2.71%。

        无CP相较于其他性向,明显类型更加杂乱,东方衍生占比最大(27.59%),剧情(19.72%),其他衍生(13.06%),轻小说(11.15%),奇幻(6.8%),西方衍生(6.4%),传奇(5.2%)

        对言情、纯爱去掉爱情后的图进行分析,言情和纯爱中东方衍生都达到了33%,占比最大,

        言情中占比较大的是东方衍生(33.25%),仙侠(11.26%),西方衍生(10.55%),奇幻(9.14%),其他衍生(8.46%),剧情(8.02%)。

        纯爱中占比较大的是东方衍生(33.52%),西方衍生(9.79%),其他衍生(9.41%),轻小说(9.34%),仙侠(8.86%)

1.2.5风格

        从左到右,从上往下依次是言情、纯爱、百合、无CP。

        四种性向下都是轻松为主要风格,占60%-70%,正剧位居第二,在30%左右,而报销、暗黑、悲剧甚至不超2%。

1.2.6进度

         从左到右,从上往下依次是言情、纯爱、百合、无CP。

        四种性向下暂停都是占据极少数,不到0.3%,言情、纯爱、百合完结连载比大概在9:1,而无CP则大概在3:1,晋江这两年无CP有渐起之势,完结连载比可以印证这一点。

1.2.7视角

         从左到右,从上往下依次是言情、纯爱、百合、无CP。

        四种性向在视角方面呈现巨大的差异。言情女主视角为主(94.42%),纯爱视角主受为主(81.36%),主攻次之(14.04%),互攻只占不到1%,但在百合文中,互攻占(32.7%),主受次之(31.5%),主攻(26.09%),三种视角较为平均。而无CP中,男主占比最大(72.19%),女主次之(20.04%),男主视角为主,这在女频向的晋江实属一个奇怪的现象。推测可能是男频于此的替代,也有可能是纯爱近期势弱,部分作者转攻无CP的结果,需要进一步分析论证。

1.2.8出版状态

         从左到右,从上往下依次是言情、纯爱、百合、无CP。

        目前言情出版数和占比都是最高的(12.47%),纯爱次之(5.86%),百合(3.41%)和无CP(0.53%)较少。

1.2.9签约状态

         46844本小说是由15365名作者写的,其中92.55%的作者已签约。

2柱状图/折线图

2.1代码

  1. data1 = data.copy()
  2. data1['年份']=data1['发表日期'].dt.year
  3. group1 = data1.query("性向=='言情'").groupby(['年份']).count().sort_values('年份',ascending=False)
  4. group2 = data1.query("性向=='纯爱'").groupby(['年份']).count().sort_values('年份',ascending=False)
  5. group3 = data1.query("性向=='百合'").groupby(['年份']).count().sort_values('年份',ascending=False)
  6. group4 = data1.query("性向=='无CP'").groupby(['年份']).count().sort_values('年份',ascending=False)
  7. group5 = data1.query("性向=='女尊'").groupby(['年份']).count().sort_values('年份',ascending=False)
  8. c = (
  9. #Bar(init_opts=opts.InitOpts(theme='white')) #背景颜色
  10. Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
  11. .add_xaxis(group1.index.tolist())
  12. .add_yaxis("言情", group1['作品'].tolist())
  13. .add_yaxis("纯爱", group2['作品'].tolist())
  14. .add_yaxis("百合", group3['作品'].tolist())
  15. .add_yaxis("无CP", group4['作品'].tolist())
  16. .add_yaxis("女尊", group5['作品'].tolist())
  17. .set_global_opts(
  18. title_opts=opts.TitleOpts(title="柱状图",subtitle="slider-水平/圈选功能/切换折线、堆叠、柱状"),
  19. datazoom_opts=opts.DataZoomOpts(), #水平线
  20. brush_opts=opts.BrushOpts(), #允许圈选功能
  21. toolbox_opts=opts.ToolboxOpts(),#允许切换折线/堆叠/柱状
  22. legend_opts=opts.LegendOpts(is_show=True,#图例的类型 这个就是商家A 商家B那个显示与否
  23. type_ = 'plain', # 图例的类型。可选值;'plain':普通图例。缺省就是普通图例。'scroll':可滚动翻页的图例。当图例数量较多时可以使用。
  24. ),
  25. )
  26. )
  27. c.render_notebook()

2.2结果

        主要针对发表时间、发表日期这两个数据展开分析。

2.2.1年份

        目前来说,晋江小说在逐年增长,大概在2015年前后,迅速增加,目前顶峰在2020年,推测2021和2022年逐年比2019年低的原因是时间积累还不够,也不排除晋江近两年流量变低或是小说质量不高的可能。

2.2.2月份

         其实每个月发表作品都较为平均,2月,4月,9月会略微低,1月会略微高。

2.2.3时间

         作者发表作品多集中于每天0点、9点、12点、18点、21点。

3日历图

3.1代码

  1. data1 = data.copy()
  2. data1['年份']=data1['发表日期'].dt.year
  3. group1 = data1.query("年份==2020").groupby(['发表日期']).count().sort_values('作品',ascending=False)
  4. # 把数据框转变成列表,以便下面绘图时直接调用
  5. df1 = [[str(x)[:10], round(y,1)] for (x, y) in zip(group1.index.tolist(), group1['作品'].tolist())]
  6. c = (
  7. Calendar(init_opts=opts.InitOpts(theme=ThemeType.INFOGRAPHIC))
  8. .add("", df1, calendar_opts=opts.CalendarOpts(range_="2020"))
  9. .set_global_opts(
  10. title_opts=opts.TitleOpts(title="日历图-2020年作品发表情况"),
  11. visualmap_opts=opts.VisualMapOpts(
  12. max_=72,
  13. min_=1,
  14. orient="horizontal",
  15. is_piecewise=True,
  16. pos_top="230px",
  17. pos_left="100px",
  18. ),
  19. )
  20. )
  21. c.render_notebook()

3.2结果

 

        选取了发表作品较多的近三年进行可视化。可以看到,每周周一发表作品明显比其他天更多,可能是作者想用以冲击周榜,每月1号,作品发表也较多,可能是作者想用以冲击月榜。

4漏斗图

4.1代码

  1. # 设置数据分组的位置
  2. bins_words = [0, 10000, 25000, 50000, 100000, 200000, 500000, 2000000]
  3. words_distribution1 = pd.value_counts(pd.cut(data["当前被收藏数"], bins=bins_words), sort=False)
  4. s=['1万以下', '1万-2万', '2万-5万', '5万-10万', '10万-20万', '20万-50万', '50万以上']
  5. from pyecharts.charts import Funnel
  6. c = (
  7. Funnel(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
  8. .add("类目", [list(z) for z in zip(s, words_distribution1.values.tolist())])
  9. .set_global_opts(title_opts=opts.TitleOpts(title="漏斗图-收藏数"))
  10. )
  11. c.render_notebook()

4.2结果

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/809600
推荐阅读
相关标签
  

闽ICP备14008679号