欢迎光临散文网 会员登陆 & 注册

【Python可视化大屏】“淄博烧烤”热评舆情分析大屏

2023-06-11 07:36 作者:马哥python说  | 我要投稿

一、开发背景

您好,我是 @马哥python说 ,一枚10年程序猿。

自从2023.3月以来,淄博烧烤现象持续占领热搜流量,体现了后疫情时代众多网友对人间烟火气的美好向往,本现象级事件存在一定的数据分析实践意义。

静态截图:

大屏截图

动态演示:


二、爬虫代码

2.1 爬微博列表

通过m端的搜索页面,爬取以淄博烧烤为关键词的微博id,获取到微博id的目的,是传给评论爬虫。

发送请求部分:

注意,type=60代表"热门",如下:

m端微博

解析数据部分:

至此,已经获取到以淄博烧烤为关键词的微博id列表 id_list_list 了。

2.2 爬微博评论

从2.1章节获取到微博id列表之后,传入爬取微博评论函数 get_comments

这部分爬虫讲解可移步:

最终,爬取到的微博评论数据,示例如下:

淄博烧烤-微博评论

说明:无论微博搜索页,还是微博评论页,都可以自定义设置max_page,满足自己的个性化数据量要求。

2.3 导入MySQL数据库

最核心的三行代码:

用create_engine创建数据库连接,格式为:

create_engine('数据库类型+数据库驱动://用户名:密码@数据库IP地址/数据库名称')

这样,数据库连接就创建好了。

然后,用pandas的read_csv函数读取csv文件。

最后,用pandas的to_sql函数,把数据存入MySQL数据库:

  • name='college_t2' #mysql数据库中的表名 

  • con=engine # 数据库连接 

  • index=False #不包含索引字段 

  • if_exists='replace' #如果表中存在数据,就替换掉,另外,还支持append(追加数据)

非常方便地完成了反向导入,即:从csv向数据库的导入。

这个部分的讲解视频:

三、可视化代码

3.1 大标题

由于pyecharts组件没有专门用作标题的图表,我决定灵活运用Line组件实现大标题。

首先,找到一张星空图作为大屏背景图:

大屏背景图

然后,在Line组件中加入js代码,加载背景图:

大标题效果如下:

最上方的大标题


3.2 词云图(含:加载停用词)

绘制词云图,需要先进行中文分词。既然分词,就要先设置停用词,避免干扰词影响分析结果。

这里采用哈工大停用词作为停用词词典。

这样,所有停用词就存入stopwords_list这个列表里了。

如果哈工大停用词仍然无法满足需求,再加入一些自定义停用词,extend到这个列表里:

现在就可以愉快的绘制词云图了,部分核心代码:

词云图效果:

评论内容-词云图

3.3 玫瑰图(含:snownlp情感分析)

先对评论数据进行情感判定,采用snownlp技术进行情感打分及判定结果:

将情感分析结果用pandas保存到一个Excel文件里,如下:

情感判定结果

绘制玫瑰图,部分核心代码:

玫瑰图效果:

情感分布-玫瑰图

3.4 柱形图-TOP10关键词

先根据词云图部分提取出TOP10高频词(过滤掉停用词之后的):

然后带入柱形图,部分核心代码:

柱形图效果:

top10高频词-柱形图

3.5 折线图-讨论热度趋势

首先,根据评论时间统计出每天的微博评论数量:

然后,根据统计数据画出折线图,部分核心代码:

折线图效果:

讨论热度趋势-折线图

3.6 地图-IP分布

由于IP属地字段都包含"来自"两字,先进行数据清洗,将"来自"去掉:

然后统计各个IP属地的数量,方便后续带入地图可视化:

下面开始绘制地图,部分核心代码:

地图效果,如下:

评论IP分布-中国地图

当然,地图中的颜色,都是自己设置的十六进制颜色,可以根据自己的喜好更改。

3.7 Page组合大屏

最后,也是最关键的一步,把以上所有图表组合到一起,用Page组件,并且选用DraggablePageLayout方法,即拖拽的方式,组合图表:

本代码执行完毕后,打开临时html并排版,排版完点击Save Config,把json文件放到本目录下。

再执行最后一步,调用json配置文件,生成最终大屏文件。

至此,所有代码执行完毕,生成了最终大屏html文件。

四、彩蛋-多种颜色主题

分享一个小技巧,我设置了一键更换颜色主题:

只需更换ThemeType参数,即可实现一键更换主题!

4.1 INFOGRAPHIC主题

INFOGRAPHIC

4.2 MACARONS主题

MACARONS

4.3 SHINE主题

SHINE

4.4 WALDEN主题

WALDEN

4.5 WESTEROS主题

WESTEROS

4.6 WHITE主题

WHITE

4.7 WONDERLAND主题

WONDERLAND

更多颜色主题等待小伙伴去发掘!

五、技术总结

整体技术开发流程,如下:

  1. requests 爬虫发送请求

  2. json 解析返回数据

  3. re 正则表达式清洗文本

  4. pandas保存csv文件

  5. sqlalchemy 保存MySQL数据

  6. pyecharts 可视化开发

  7. snownlp 情感分析

  8. jieba 中文分词

  9. pyecharts+page 组合大屏

  10. flask 启动网页服务

六、在线体验

为了方便大家体验可视化动态交互效果,我把此大屏部署到了服务器,请移步:

http://81.70.253.63:8888

七、演示视频

效果演示视频:


八、获取完整源码

爱学习的小伙伴,本次分析过程的完整python源码及结果数据,我已打包好,并上传至我的微信公众号"老男孩的平凡之路",后台回复"淄博烧烤大屏"即可获取。



我是@马哥python说 ,持续分享python干货中! 

【Python可视化大屏】“淄博烧烤”热评舆情分析大屏的评论 (共 条)

分享到微博请遵守国家法律