当前位置:   article > 正文

豆瓣读书top250的书籍数据可视化分析Python全代码实现_名著分析 python 可视化

名著分析 python 可视化

一、条件

1.根据上一条文章中提取的数据(BookDouban250.csv

2.必要的库

  1. import pandas as pd
  2. import numpy as np
  3. from pyecharts import options as opts
  4. from pyecharts.charts import Bar
  5. from pyecharts.globals import ThemeType
  6. from snownlp import SnowNLP
  7. from pyecharts.charts import Pie,WordCloud, Page
  8. from pyecharts.components import Table
  9. from pyecharts.charts import EffectScatter

二、实现的目标

1.评价数分布柱形图

        根据评价人数的最小值和最大值来均匀分布。按分段离散化数据。通过np.linspace计算评价人数的边界,将其分为10个区间。使用pd.cut进行分段离散化,统计每个区间的图书数量,并使用渐变颜色增强可视效果。

  1. def comment_cnt_bar() -> Bar:
  2. bar = Bar(
  3. init_opts=opts.InitOpts(theme=ThemeType.CHALK, width="800px", height="400px", chart_id='bar_cmt'))
  4. bar.add_xaxis(labels)
  5. bar.add_yaxis(
  6. "评价数",
  7. counts,
  8. itemstyle_opts=opts.ItemStyleOpts(
  9. color=color_range,
  10. opacity=0.8 # 设置透明度
  11. )
  12. )
  13. bar.set_global_opts(
  14. legend_opts=opts.LegendOpts(pos_left='right'),
  15. title_opts=opts.TitleOpts(title="评价数量区间分布-柱形图", pos_left='center'),
  16. toolbox_opts=opts.ToolboxOpts(is_show=False),
  17. xaxis_opts=opts.AxisOpts(name="评论数", axislabel_opts=opts.LabelOpts(font_size=8)),
  18. yaxis_opts=opts.AxisOpts(
  19. name="图书数量",
  20. axislabel_opts={"rotate": 0},
  21. splitline_opts=opts.SplitLineOpts(is_show=True, linestyle_opts=opts.LineStyleOpts(type_='solid')),
  22. ),
  23. )
  24. bar.set_series_opts(
  25. markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max", name="最大值")], symbol_size=35)
  26. )
  27. return bar

2.评论情感分布饼图

        使用SnowNLP库对评论进行情感分析,根据情感分数将评论划分为积极、中性和消极三类,并通过PyEcharts的Pie类生成饼图展示评论情感的分布。在图表中,展示了积极、中性、消极三类评论的占比情况。

  1. def emotion_pie() -> Pie:
  2. # 画饼图
  3. pie = (
  4. Pie(init_opts=opts.InitOpts(theme=ThemeType.CHALK, width="450px", height="350px", chart_id='pie1'))
  5. .add(
  6. series_name="评价情感分布", # 系列名称
  7. data_pair=[
  8. ['积极', pos_count],
  9. ['中性', mid_count],
  10. ['消极', neg_count]
  11. ],
  12. rosetype="radius", # 是否展示成南丁格尔图
  13. radius=["30%", "55%"], # 扇区圆心角展现数据的百分比,半径展现数据的大小
  14. label_opts=opts.LabelOpts(formatter="{b}: {d}%"), # 标签格式化,显示百分比
  15. itemstyle_opts=opts.ItemStyleOpts(border_width=2, border_color='white'), # 扇形样式,增加边框
  16. ) # 加入数据
  17. .set_global_opts( # 全局设置项
  18. title_opts=opts.TitleOpts(title="短评情感分布-饼图", pos_left='center'), # 标题
  19. legend_opts=opts.LegendOpts(pos_left='right', orient='vertical') # 图例设置项,靠右,竖向排列
  20. )
  21. )
  22. return pie

3.书籍名称词云图

        通过PyEcharts的WordCloud类生成词云图,展示书籍名称的词云分布。词云图中,文字大小表示出现频率,通过视觉效果形成图案,直观呈现了书籍名称的特征。

  1. def book_name_wordcloud() -> WordCloud:
  2. wc = (
  3. WordCloud(init_opts=opts.InitOpts(width="450px", height="350px",
  4. theme=ThemeType.CHALK, chart_id='wc1'))
  5. .add(series_name="书籍名称",
  6. data_pair=[(word, 1) for word in text.split()],
  7. word_size_range=[15, 20],
  8. width='400px', # 宽度
  9. height='300px', # 高度
  10. word_gap=5 # 单词间隔
  11. )
  12. .set_global_opts(
  13. title_opts=opts.TitleOpts(pos_left='center',
  14. title="书籍名称分析-词云图",
  15. title_textstyle_opts=opts.TextStyleOpts(font_size=20) # 设置标题
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/432252
推荐阅读
相关标签
  

闽ICP备14008679号