如何用Python制作微信好友个性签名词云图
作者:伪君子_ 发布时间:2023-02-24 07:46:20
前言
上次查看了微信好友的位置信息,想了想,还是不过瘾,于是就琢磨起了把微信好友的个性签名拿到,然后分词,接着分析词频,最后弄出词云图来。
1.环境说明
Win10 系统下 Python3,编译器是 Pycharm,需要安装 itchat、matplotlib、pandas、jieba、wordcloud、numpy、pillow 这几个包
介绍 Pycharm 安装第三方包的方法。
由于某些包不能直接用 Pycharm 安装,所以这里说一下安装的方法。
安装wordcloud
worcloud需要numpy> = 1.5.1,pillow和matplotlib,所以要先安装numpy,pillow和matplotlib。
在这个链接找到合适的whl文件
如果是电脑是64位,python是3.6就下载下面这个。
下载回来就放到Python的目录下,就比如我是把 Python 安装在E:\Python36这个目录,就把下载回来的 wordcloud-1.3.3-cp36-cp36m-win_amd64.whl 放在这。
然后按win键+R ,输入cmd,回车
然后cd 到 Python 目录那
接下来就是安装了,pip install wordcloud-1.3.3-cp36-cp36m-win_amd64.whl
除了这个以外,某一个包需要翻墙才能安装,具体是哪个就不记得了,好像是 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 的照片,具体图片看个人喜好。
最好就是下图这样的照片
这样生成的词云就会很好看
意思就是图片要有白色的背景,人物颜色较鲜艳,人物突出(图片分辨率要高)
把代码安装顺序复制到 Pycharm,然后鼠标右键,选择 Run,扫描弹出来的二维码,登录微信网页版,确认后等待一下,看到下图就说明代码运行得很完美,成功运行,没有报错。
然后稍微等一下就可以看到词云图了。
来源:https://www.jianshu.com/p/ea11eac3d2ad?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation
猜你喜欢
- 箱形图概念后面的图形都是一些专业的统计图形,当然也会是我们可视化的对象。箱形图(Box-plot)又称为盒须图、盒式图或箱线图,是一种用作显
- josn基本操作1.导入import json2.字典转json:json.dumps(dict,ensure_ascii=False),加
- 国旗是一个国家的象征,它可以反映一个国家的特色和传统,国旗起源于近代的欧洲,是一个国家主权意识不断增强后的必然产物,本文我们使用 Pytho
- python解决循环依赖1.概述在使用python开发过程中在引入其他模块时可能都经历过一个异常就是循环引用most likely due
- 在工作和学习中如果同时传输多个文件,大的安装包,python提供了一种无线传输的方法,开启一个本地http服务器,同一局域网下可方便访问 经
- 问题: 1.购物车中的数据是否应该存储在数据库中? 我特别想知道在真正的项目中,那些真正的软件工程师是如何考虑这个问题的。在Google上一
- 今早无聊。。。7点起来突然想写个刷访问量的。。那就动手吧仅供测试,不建议刷访问量哦~~很简单的思路,第一步提取代理ip,第二步模拟访问。提取
- sys模块提供了与python解释器紧密相关的一些变量和函数。sys部分常用函数函数说明path获取模块文件搜索路径的字符串,或临时指定新搜
- 实例如下:# bytes object b = b"example" # str object s = "ex
- 有些时候,我们需要将某些程序放到子进程中去运行,以达到整合系统的目的。在Python中,一个非常好的选择就是使用subprocess模块,本
- 上一篇中,我们已经打开了Django自带的用户认证模块,并配置了数据库连接,创建了相应的表,本篇我们将在Django自带的用户认证的基础上,
- Some readers have asked to me what
- pycharm简介PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语
- 解决方法一:使用python的BeautifulSoup来抓取网页然后输出网页标题,但是输出的总是乱码,找了好久找到解决办法,下面分享给大家
- 本文实例为大家分享了python实现杨氏矩阵查找的具体代码,供大家参考,具体内容如下问题描述:在一个m行n列二维数组中,每一行都按照从左到右
- python3 cmp实现python3移除了cmp()函数,但提供了六个丰富的比较运算符,详见此处import operator &nbs
- 今天有业务需要制作用户头像的需求,在网上找了个可以裁剪大图制作自己希望大小的图片的方法(基于Struts2)。特此记录一下。不废话,具体的步
- html文件中引入js文件,显示乱码!js文件为utf-8 编码(无bom) ,此时只要将js文件转成utf-8 BOM编码就可
- 片头Python看了差不多三四天吧,基本上给基础看差不多了。写个管理系统吧,后续不出意外SQL、文件存储版本都会更。学习Python感想:
- 一、简介time模块提供各种操作时间的函数说明:一般有两种表示时间的方式:第一种是时间戳的方式(相对于1970.1.1 00:00:00以秒