微信好友信息统计-图、词云和热图
文章目录
- 一、背景
- 二、效果展示
- 三、wordcloud
- 四、jieba
- 五、matplotlib
- 六、pyecharts
- 七、关键步骤
- 八、打包成exe时遇到的问题
- 九、demo下载
一、背景
上一篇文章我们讲解了微信机器人,主要使用了wxpy这个库,如果还不会登录机器人的话可以可以快速浏览上一篇文章,微信聊天机器人-存储好友分享消息。这篇文章我们继续使用wxpy统计微信账号好友信息。主要包括:好友信息词云、好友所在省份分布、城市分布、好友性别和好友地理位置热力图等
二、效果展示
1、好友信息:男女比例柱状图、好友省份饼图、好友城市饼图
2、好友个性签名词云
3、好友所在位置热力图
三、wordcloud
wordcloud是生成词云的包,使用起来也是比较简单
1、安装wordcloud包
pip install wordcloud
2、导入词云包
from wordcloud import WordCloud, ImageColorGenerator
3、构造WordCloud对象
wc = WordCloud(background_color = p_background, max_words = p_max_words #显示最大词数, font_path = "msyh.ttf", min_font_size = p_min_font_size, max_font_size = p_max_font_size, width = p_width #图幅宽度, height = p_height, mask = cloud_mask )
4、生成词云结果
result = wc.generate(cloud_text)
5、保存词云结果为图片
wordCloudFile = os.getcwd() + "\\wordCloud.png"
if os.path.exists(wordCloudFile) : os.remove(wordCloudFile)
result.to_file(wordCloudFile)
四、jieba
jieba是一个分词工具,可以把已知文本串进行分词,分词的结果是一个列表,wordcloud正好需要这么一个列表
1、安装jieba包
pip install jieba
2、导入分词工具包
import jieba
3、添加建议词组,即不被分割的词组
jieba.suggest_freq(('微博'), True)
4、加载用户自定义词组
jieba.load_userdict(os.getcwd() + "\\jieba_user_dict.txt")
5、分词
segs = jieba.cut(text)
五、matplotlib
matplotlib是一个python图表包,包含各种图表控件,本文中主要使用了饼图和柱状图
1、安装matplotlib
pip install matplotlib
2、导入图表控件
import matplotlib.pyplot as plt
3、构造一个figure对象
```fig = plt.figure(num = bot.self.name + u’的好友签名词云’, figsize=(6.5, 6))``
4、添加plot
plt.plot()
plt.axis('off')
plt.title(bot.self.name + u"的好友个性签名词云")
plt.imshow(result)
5、为了解决乱码问题,需要在构造figure前设置下编码
plt.rcParams['font.sans-serif'] = ['SimHei']
6、显示
plt.show()
六、pyecharts
pyecharts是热力图包,需要在浏览器中查看
1、安装pyecharts包
pip install pyecharts
2、导入
from pyecharts import Map, Page
3、构造一个Map对象
friends_map = Map("微信好友全国分布图", width = 1200, height=600)
4、添加好友省份数据
friends_map.add(
""
, province_dict.keys()
, province_dict.values()
, is_label_show = True
, is_visualmap = True
, maptype='china'
, visual_range = [0, max(province_dict.values())]
, visual_text_color = 'red'
, visual_range_text = ['少', '多']
, visual_range_color = ['#FFFF00', '#D6292B'] # [黄,红]由低到高
)
5、渲染,会生成一个index.html文件在同目录下,使用浏览器打开即可
6、如果发现地图上没有数据,需要下载地图数据包
echarts-countries-pypkg 是全球国家地图,echarts-china-provinces-pypkg是中国省级地图, harts-china-cities-pypkg是中国城市地图pip install echarts-countries-pypkgpip install echarts-china-provinces-pypkgpip install echarts-china-cities-pypkg
七、关键步骤
1、获取好友男女信息
#获取好友性别、省份
def generateInfo():male = female = other = 0for sex, count in friends_stat["sex"].items():# 1代表MALE, 2代表FEMALEif sex == 1:male = countprint ("MALE %d" % count)elif sex == 2:female = countprint ("FEMALE %d" % count)else :other = countprint ("other %d" % count)total = male + female + otherprint ("男性朋友:%.2f%%" % (float(male) / total * 100))print ("女性朋友:%.2f%%" % (float(female) / total * 100))print ("其他:%.2f%%" % (float(other) / total * 100))
2、好友省份
province_dict = {}
friend_privince = []
for province, count in friends_stat["province"].items():if province != "":friend_privince.append([province, count])province_dict[province] = count
、好友城市friend_city = []
for city, count in friends_stat["city"].items():if city != "":friend_city.append([city, count])
4、签名数据清洗
fs = bot.friends()
for f in fs :pattern = re.compile(r'[一-龥]+')filterdata = re.findall(pattern, f.signature)text = text + ''.join(filterdata)
八、打包成exe时遇到的问题
1、jieba包在打包成exe,运行时可能会报找不到dict.txt文件,因此导入jieba包时执行以下代码,并将dict.txt文件拷贝到exe目录下
import jieba
jieba.set_dictionary(".\dict.txt")
jieba.initialize()
或者看源码目录里的log.txt文件解决方案
2、wordcloud打包时,也会遇到stopwords文件缺失,解决办法是修改源码
wordcloud.py文件中30行代码修改
to :STOPWORDS = set(map(str.strip, open(os.path.join(os.path.dirname(sys.executable), 'stopwords')).readlines()))from :STOPWORDS = set(map(str.strip, open(os.path.join(FILE, 'stopwords')).readlines()))
打包完毕,开发时需要还原
九、demo下载
需要完整源码的可以下载:微信好友信息统计-图、词云和热图
很重要–转载声明
本站文章无特别说明,皆为原创,版权所有,转载时请用链接的方式,给出原文出处。同时写上原作者:朝十晚八 or Twowords
如要转载,请原文转载,如在转载时修改本文,请事先告知,谢绝在转载时通过修改本文达到有利于转载者的目的。
微信好友信息统计-图、词云和热图相关推荐
- 《延禧攻略》演员大起底——利用Python+bs+pyecharts分析绘制词云和玫瑰图
最近大火的电视剧<延禧攻略>已宣告大结局,除了剧情走心,演员的那些头花啊头饰啊,戏服也都精致无比.本文利用Python抓取互联网上演员的部分数据,分析演员的姓名.星座.身高.体重和籍贯等信 ...
- RNA-seq结果图片如何解读(火山图、韦恩图、聚类热图和折线图)
在RNA-seq项目中,常见的结果包括:火山图.韦恩图.聚类热图.log2(ratios)折线图.有向无环图.散点图.代谢通路图.蛋白互作图等.今天我们先来一起学习火山图.韦恩图.聚类热图和折线图的解 ...
- 使用ComplexHeatmap绘制复杂热图|Note2:单个热图(万字超详细教程)
2. 单个热图 2.1 颜色 2.2 标题 2.3 聚类 2.3.1 距离方法 2.3.2 聚类方法 2.3.3 渲染树状图 2.3.4 重排树状图 2.4 设置行列顺序 2.5 维度名称 2.6 热 ...
- 热图pheatmap 热图3:热图行列分组信息注释
热图pheatmap library(pheatmap) getwd() setwd("D:\Win10 System\Documents\WeChat Files\wxid_f27yna0 ...
- 微信神器:一键批量下载微信好友头像并拼成一张图
苏生不惑第279 篇原创文章,将本公众号设为星标,第一时间看最新文章. 之前分享过一键生成你的微信社交数据报告,不过很多人的微信不能登录网页版微信.会提示这个:为了你的帐号安全,此微信号不能登录网页微 ...
- python热图_Python绘制热图
1.matplitlib绘制热图 import random from matplotlib import pyplot as plt from matplotlib import cm from m ...
- python热图_Python 绘制热图
原博文 2019-09-03 16:50 − 1.matplitlib绘制热图 1 import random 2 from matplotlib import pyplot as plt 3 fro ...
- python相关性矩阵热图_python – 相关热图
另一种方法是使用seaborn中的热图函数来绘制协方差.此示例使用R中ISLR程序包中的自动数据集(与您显示的示例中的相同). import pandas.rpy.common as com impo ...
- 热图3:热图行列分组信息注释
这次我们要让热图更加复杂化. 实际上,有些情况下做热图可能只需要标注对照组.实验组即可.但是大多时候,可以在热图上体现更多信息,比如,除了分组,还有不同得处理.年龄.性别.疾病阶段等等,以及不同功能基 ...
最新文章
- cnblogs和org2blog使用总结
- 最强的windows2003安全设置
- 字节2020算法岗校招一面
- 「JOISC 2020 Day4」治疗计划(线段树+dijkstra最短路)
- 在PC上用模拟器搭建Windows Mobile仿真环境:Microsoft Device Emulator使用
- python Box-Cox数据变化与逆变化
- 五年烧光 3.5 亿美金,互联网独角兽是如何把自己玩死的?
- log4j配置文件详解------自学
- 手机点餐系统概述_餐馆点菜系统概要设计说明书.doc
- isSelected() 的使用
- sql查询将一对多转化为一对一
- element ui 日历空控件添加农历 节气和家假日
- 小猿圈python之python期末考试测试题(一)_小猿圈python之python期末考试测试题(二)...
- codeblocks下如何修改新建文件的默认代码?
- mysql 联表查询 简书_mysql多表查询
- 用inno Setup做应用程序安装包的示例脚本 .iss文件
- 控温/恒温烙铁操作方法及使用说明
- 树莓派3B+TensorFlow Python3.7
- IDEA版最新SMM整合,根据手机号实现登录/注册/修改密码
- 以数据为中心的路由协议_如何将电信机房改造为适合5G发展的数据中心?