文章目录

  • 一、背景
  • 二、效果展示
  • 三、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下载

需要完整源码的可以下载:微信好友信息统计-图、词云和热图

如果您觉得文章不错,不妨给个打赏,写作不易,感谢各位的支持。您的支持是我最大的动力,谢谢!!!

很重要–转载声明

  1. 本站文章无特别说明,皆为原创,版权所有,转载时请用链接的方式,给出原文出处。同时写上原作者:朝十晚八 or Twowords

  2. 如要转载,请原文转载,如在转载时修改本文,请事先告知,谢绝在转载时通过修改本文达到有利于转载者的目的。


微信好友信息统计-图、词云和热图相关推荐

  1. 《延禧攻略》演员大起底——利用Python+bs+pyecharts分析绘制词云和玫瑰图

    最近大火的电视剧<延禧攻略>已宣告大结局,除了剧情走心,演员的那些头花啊头饰啊,戏服也都精致无比.本文利用Python抓取互联网上演员的部分数据,分析演员的姓名.星座.身高.体重和籍贯等信 ...

  2. RNA-seq结果图片如何解读(火山图、韦恩图、聚类热图和折线图)

    在RNA-seq项目中,常见的结果包括:火山图.韦恩图.聚类热图.log2(ratios)折线图.有向无环图.散点图.代谢通路图.蛋白互作图等.今天我们先来一起学习火山图.韦恩图.聚类热图和折线图的解 ...

  3. 使用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 热 ...

  4. 热图pheatmap 热图3:热图行列分组信息注释

    热图pheatmap library(pheatmap) getwd() setwd("D:\Win10 System\Documents\WeChat Files\wxid_f27yna0 ...

  5. 微信神器:一键批量下载微信好友头像并拼成一张图

    苏生不惑第279 篇原创文章,将本公众号设为星标,第一时间看最新文章. 之前分享过一键生成你的微信社交数据报告,不过很多人的微信不能登录网页版微信.会提示这个:为了你的帐号安全,此微信号不能登录网页微 ...

  6. python热图_Python绘制热图

    1.matplitlib绘制热图 import random from matplotlib import pyplot as plt from matplotlib import cm from m ...

  7. python热图_Python 绘制热图

    原博文 2019-09-03 16:50 − 1.matplitlib绘制热图 1 import random 2 from matplotlib import pyplot as plt 3 fro ...

  8. python相关性矩阵热图_python – 相关热图

    另一种方法是使用seaborn中的热图函数来绘制协方差.此示例使用R中ISLR程序包中的自动数据集(与您显示的示例中的相同). import pandas.rpy.common as com impo ...

  9. 热图3:热图行列分组信息注释

    这次我们要让热图更加复杂化. 实际上,有些情况下做热图可能只需要标注对照组.实验组即可.但是大多时候,可以在热图上体现更多信息,比如,除了分组,还有不同得处理.年龄.性别.疾病阶段等等,以及不同功能基 ...

最新文章

  1. cnblogs和org2blog使用总结
  2. 最强的windows2003安全设置
  3. 字节2020算法岗校招一面
  4. 「JOISC 2020 Day4」治疗计划(线段树+dijkstra最短路)
  5. 在PC上用模拟器搭建Windows Mobile仿真环境:Microsoft Device Emulator使用
  6. python Box-Cox数据变化与逆变化
  7. 五年烧光 3.5 亿美金,互联网独角兽是如何把自己玩死的?
  8. log4j配置文件详解------自学
  9. 手机点餐系统概述_餐馆点菜系统概要设计说明书.doc
  10. isSelected() 的使用
  11. sql查询将一对多转化为一对一
  12. element ui 日历空控件添加农历 节气和家假日
  13. 小猿圈python之python期末考试测试题(一)_小猿圈python之python期末考试测试题(二)...
  14. codeblocks下如何修改新建文件的默认代码?
  15. mysql 联表查询 简书_mysql多表查询
  16. 用inno Setup做应用程序安装包的示例脚本 .iss文件
  17. 控温/恒温烙铁操作方法及使用说明
  18. 树莓派3B+TensorFlow Python3.7
  19. IDEA版最新SMM整合,根据手机号实现登录/注册/修改密码
  20. 以数据为中心的路由协议_如何将电信机房改造为适合5G发展的数据中心?

热门文章

  1. 【无标题】XGPON和XGSPON MA5800 三方兼容
  2. 用计算机计算找到的规律奇妙的数字教学设计,四年级上册数学《探索与发现(一)有趣的算式》教案及教学反思...
  3. 国庆享优惠iphone6大礼送不停
  4. 男人:从未了解的十五件事
  5. ARP9-Licensee
  6. 参加51CTo培训,红帽RHCE认证考试通过啦
  7. 一个有趣的SQL查询
  8. UnRaid开启网卡SR-IOV并直通给虚拟机的方法
  9. 数字摄影测量特征点提取之SUSAN算子
  10. 牢记公式,ardupilot EKF2就是纸老虎(二)!