本文首发公众号【老男孩的平凡之路】 我是 ,一枚10年程序猿。
自从2023.3月以来,"淄博烧烤"现象持续占领热搜流量,体现了后疫情时代众多网友对人间烟火气的美好向往,本现象级事件存在一定的数据分析实践意义。
动态演示:
通过m端的搜索页面,爬取以"淄博烧烤"为关键词的微博id,获取到微博id的目的,是传给评论爬虫。
发送请求部分:
注意,type=60代表"热门",如下:
解析数据部分:
至此,已经获取到以「淄博烧烤」为关键词的微博id列表 id_list_list 了。
从2.1章节获取到微博id列表之后,传入爬取微博评论函数 get_comments
这部分爬虫讲解可移步:
【2023微博评论爬虫】用python爬上千条微博评论,突破15页限制!
最终,爬取到的微博评论数据,示例如下:
说明:无论微博搜索页,还是微博评论页,都可以自定义设置max_page,满足自己的个性化数据量要求。
最核心的三行代码:
用create_engine创建数据库连接,格式为:
create_engine('数据库类型+数据库驱动://用户名:密码@数据库IP地址/数据库名称')
这样,数据库连接就创建好了。
然后,用pandas的read_csv函数读取csv文件。
最后,用pandas的to_sql函数,把数据存入MySQL数据库:
非常方便地完成了反向导入,即:从csv向数据库的导入。
这个部分的讲解视频:
仅用Python三行代码,实现数据库和excel之间的导入导出!
由于pyecharts组件没有专门用作标题的图表,我决定灵活运用Line组件实现大标题。
首先,找到一张星空图作为大屏背景图:
然后,在Line组件中加入js代码,加载背景图:
大标题效果如下:
绘制词云图,需要先进行中文分词。既然分词,就要先设置停用词,避免干扰词影响分析结果。
这里采用哈工大停用词作为停用词词典。
这样,所有停用词就存入stopwords_list这个列表里了。
如果哈工大停用词仍然无法满足需求,再加入一些自定义停用词,extend到这个列表里:
现在就可以愉快的绘制词云图了,部分核心代码:
词云图效果:
先对评论数据进行情感判定,采用snownlp技术进行情感打分及判定结果:
将情感分析结果用pandas保存到一个Excel文件里,如下:
绘制玫瑰图,部分核心代码:
玫瑰图效果:
先根据词云图部分提取出TOP10高频词(过滤掉停用词之后的):
然后带入柱形图,部分核心代码:
柱形图效果:
首先,根据评论时间统计出每天的微博评论数量:
然后,根据统计数据画出折线图,部分核心代码:
折线图效果:
由于IP属地字段都包含"来自"两字,先进行数据清洗,将"来自"去掉:
然后统计各个IP属地的数量,方便后续带入地图可视化:
下面开始绘制地图,部分核心代码:
地图效果,如下:
当然,地图中的颜色,都是自己设置的十六进制颜色,可以根据自己的喜好更改。
最后,也是最关键的一步,把以上所有图表组合到一起,用Page组件,并且选用DraggablePageLayout方法,即拖拽的方式,组合图表:
本代码执行完毕后,打开临时html并排版,排版完点击Save Config,把json文件放到本目录下。
再执行最后一步,调用json配置文件,生成最终大屏文件。
至此,所有代码执行完毕,生成了最终大屏html文件。
分享一个小技巧,我设置了一键更换颜色主题:
只需更换ThemeType参数,即可实现一键更换主题!
更多颜色主题等待小伙伴去发掘!
技术开发流程:
为了方便大家体验可视化动态交互效果,我把此大屏部署到了服务器,请移步:
mgnb.pro:8888
效果演示视频:
本文地址:http://lanlanwork.gawce.com/quote/8173.html 阁恬下 http://lanlanwork.gawce.com/ , 查看更多