如何用Python制作微信好友个性签名词云图


Posted in Python onJune 28, 2019

前言

上次查看了微信好友的位置信息,想了想,还是不过瘾,于是就琢磨起了把微信好友的个性签名拿到,然后分词,接着分析词频,最后弄出词云图来。

1.环境说明

Win10 系统下 Python3,编译器是 Pycharm,需要安装 itchat、matplotlib、pandas、jieba、wordcloud、numpy、pillow 这几个包

介绍 Pycharm 安装第三方包的方法。

如何用Python制作微信好友个性签名词云图

如何用Python制作微信好友个性签名词云图

由于某些包不能直接用 Pycharm 安装,所以这里说一下安装的方法。

安装wordcloud

worcloud需要numpy> = 1.5.1,pillow和matplotlib,所以要先安装numpy,pillow和matplotlib。

在这个链接找到合适的whl文件

如何用Python制作微信好友个性签名词云图

如果是电脑是64位,python是3.6就下载下面这个。

如何用Python制作微信好友个性签名词云图

下载回来就放到Python的目录下,就比如我是把 Python 安装在E:\Python36这个目录,就把下载回来的 wordcloud-1.3.3-cp36-cp36m-win_amd64.whl 放在这。

如何用Python制作微信好友个性签名词云图

然后按win键+R ,输入cmd,回车

如何用Python制作微信好友个性签名词云图

然后cd 到 Python 目录那

如何用Python制作微信好友个性签名词云图

接下来就是安装了,pip install wordcloud-1.3.3-cp36-cp36m-win_amd64.whl

如何用Python制作微信好友个性签名词云图

除了这个以外,某一个包需要翻墙才能安装,具体是哪个就不记得了,好像是 pandas。

2.相关代码

先把需要的东西导入,安装这些包可不简单

import itchat
import matplotlib.pyplot as plt
import re, jieba
import pandas as pd
from wordcloud import WordCloud, ImageColorGenerator
import numpy as np
import PIL.Image as Image

登录微信

itchat.auto_login(hotReload=True)
friends = itchat.get_friends(update=True)

获取数据

data = pd.DataFrame() # 提出好友的昵称、性别、省份、城市、个性签名,生成一个数据框
columns=['NickName', 'Sex', 'Province', 'City', 'Signature']
for col in columns:
val = []
for i in friends[1:]: # friends[0]是自己的信息,因此我们要从[1:]开始
val.append(i[col])
data[col] = pd.Series(val)

把个性签名中的 emoji 和别的东西过滤一下

siglist = []
for i in data['Signature']:
signature = i.strip().replace('emoji','').replace('span','').replace('class','')
rep = re.compile('1f\d+\w*|[<>/=]') # 具体含义另行查看
signature = rep.sub('', signature)
siglist.append(signature)
text = ''.join(siglist)

使用结巴分词进行分词,用 matplotlib 把图画出来

word_list = jieba.cut(text, cut_all=True)
word_space_split = ' '.join(word_list)
coloring = np.array(Image.open("E:/Python/wechat/toux.jpg")) #这个路径可以改,最好还是不要改
my_wordcloud = WordCloud(background_color="white", max_words=2000,
mask=coloring, max_font_size=100, random_state=42, scale=2,
font_path="C:/Windows/Fonts/simkai.ttf").generate(word_space_split)
image_colors = ImageColorGenerator(coloring)
plt.imshow(my_wordcloud.recolor(color_func=image_colors))
plt.imshow(my_wordcloud)
plt.axis("off")
plt.show()

3.运行

先说明一下,如果能看懂代码,知道该怎么把必要的文件弄好,那就不怎么需要看下面这个。

如果看得不太理解,运行前一定要在 E 盘建立一个文件夹。路径是 E:\Python\Wechat ,然后在文件夹中放入一张命名为 toux.jpg 的照片,具体图片看个人喜好。

如何用Python制作微信好友个性签名词云图

最好就是下图这样的照片

如何用Python制作微信好友个性签名词云图

这样生成的词云就会很好看

如何用Python制作微信好友个性签名词云图

意思就是图片要有白色的背景,人物颜色较鲜艳,人物突出(图片分辨率要高)

把代码安装顺序复制到 Pycharm,然后鼠标右键,选择 Run,扫描弹出来的二维码,登录微信网页版,确认后等待一下,看到下图就说明代码运行得很完美,成功运行,没有报错。

如何用Python制作微信好友个性签名词云图

然后稍微等一下就可以看到词云图了。

如何用Python制作微信好友个性签名词云图

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python创建和删除目录的方法
Apr 29 Python
Python数据结构与算法之图的基本实现及迭代器实例详解
Dec 12 Python
Python实现判断给定列表是否有重复元素的方法
Apr 11 Python
python爬取网页内容转换为PDF文件
Jul 28 Python
python 列表递归求和、计数、求最大元素的实例
Nov 28 Python
使用 Python 玩转 GitHub 的贡献板(推荐)
Apr 04 Python
Python中的 sort 和 sorted的用法与区别
Aug 10 Python
Python Django 封装分页成通用的模块详解
Aug 21 Python
python爬虫之爬取百度音乐的实现方法
Aug 24 Python
python超时重新请求解决方案
Oct 21 Python
keras实现调用自己训练的模型,并去掉全连接层
Jun 09 Python
python tkinter的消息框模块(messagebox,simpledialog)
Nov 07 Python
python打包exe开机自动启动的实例(windows)
Jun 28 #Python
python脚本开机自启的实现方法
Jun 28 #Python
Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析)
Jun 28 #Python
python把转列表为集合的方法
Jun 28 #Python
Python matplotlib学习笔记之坐标轴范围
Jun 28 #Python
Python程序打包工具py2exe和PyInstaller详解
Jun 28 #Python
python实现关闭第三方窗口的方法
Jun 28 #Python
You might like
一个odbc连mssql分页的类
2006/10/09 PHP
php获取mysql版本的几种方法小结
2008/03/25 PHP
PHP魔术方法之__call与__callStatic使用方法
2017/07/23 PHP
浅谈使用 Yii2 AssetBundle 中 $publishOptions 的正确姿势
2017/11/08 PHP
取得传值的函数
2006/10/27 Javascript
基于jQuery的日期选择控件
2009/10/27 Javascript
javascript 动态修改样式和层叠样式表代码
2010/04/27 Javascript
JQuery的Alert消息框插件使用介绍
2010/10/09 Javascript
IE6-IE9不支持table.innerHTML的解决方法分享
2012/09/14 Javascript
javascript实现促销倒计时+fixed固定在底部
2013/09/18 Javascript
javascript获取选中的文本的方法代码
2013/10/30 Javascript
fmt:formatDate的输出格式详解
2014/01/09 Javascript
js和jquery如何获取图片真实的宽度和高度
2014/09/28 Javascript
jquery对复选框(checkbox)的操作汇总
2016/01/13 Javascript
js+canvas绘制矩形的方法
2016/01/28 Javascript
详解AngularJS中$http缓存以及处理多个$http请求的方法
2016/02/06 Javascript
js将table的每个td的内容自动赋值给其title属性的方法
2016/10/13 Javascript
Angular2平滑升级到Angular4的步骤详解
2017/03/29 Javascript
js自定义Tab选项卡效果
2017/06/05 Javascript
JavaScript输出所选择起始与结束日期的方法
2017/07/12 Javascript
jQuery实现为动态添加的元素绑定事件实例分析
2018/09/07 jQuery
vue输入节流,避免实时请求接口的实例代码
2019/10/30 Javascript
JS制作简易计算器的实例代码
2020/07/04 Javascript
Pandas 缺失数据处理的实现
2019/11/04 Python
pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)
2020/01/18 Python
如何通过Python实现RabbitMQ延迟队列
2020/11/28 Python
使用CSS3的box-sizing属性解决div宽高被内边距撑开的问题
2016/06/28 HTML / CSS
英国婴儿及儿童产品商店:TigerParrot
2019/03/04 全球购物
体育教育个人自荐信范文
2013/12/01 职场文书
档案检查欢迎词
2014/01/13 职场文书
物流管理专业求职信
2014/05/29 职场文书
群众路线批评与自我批评发言稿
2014/10/16 职场文书
Python基础教程,Python入门教程(超详细)
2021/06/24 Python
Java SSH 秘钥连接mysql数据库的方法
2021/06/28 Java/Android
mysql 生成连续日期及变量赋值
2022/03/20 MySQL
Java 超详细讲解hashCode方法
2022/04/07 Java/Android