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

yizhihongxing

制作微信好友个性签名词云图是一项很有趣的Python项目。下面是详细的制作攻略。

1. 准备数据

要制作词云图,首先需要获取微信好友的签名数据。可以使用itchat这个Python库来获取微信好友信息。使用以下代码获取微信好友信息并将签名数据保存到文本文件中:

import itchat

# 登录微信
itchat.auto_login()

# 获取好友列表(含详细信息)
friends = itchat.get_friends(update=True)

# 从好友列表中提取签名信息
signature_list = []
for friend in friends:
    signature = friend["Signature"].strip().replace("emoji", "")
    if signature != "":
        signature_list.append(signature)

# 将签名信息保存到文件中
with open("signature.txt", "w", encoding="utf-8") as f:
    for signature in signature_list:
        f.write(signature + "\n")

2. 分词

接下来需要将签名数据进行分词处理。这里可以使用jieba这个Python库。使用以下代码进行分词:

import jieba

# 读取签名数据
with open("signature.txt", "r", encoding="utf-8") as f:
    text = f.read()

# 分词
word_list = jieba.cut(text)

# 将分词结果保存到文件中
with open("word_list.txt", "w", encoding="utf-8") as f:
    for word in word_list:
        f.write(word + " ")

3. 生成词云图

接下来需要使用词云生成库wordcloud来生成词云图。使用以下代码生成词云图:

import matplotlib.pyplot as plt
from wordcloud import WordCloud

# 读取分词结果
with open("word_list.txt", "r", encoding="utf-8") as f:
    text = f.read()

# 生成词云图
wordcloud = WordCloud().generate(text)

# 显示词云图
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()

# 保存词云图
wordcloud.to_file("signature_wordcloud.png")

以上是制作微信好友个性签名词云图的完整攻略。下面给出两个示例说明。

示例一

如果你想定制词云图背景颜色和字体,请使用以下代码:

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

# 读取签名数据
with open("signature.txt", "r", encoding="utf-8") as f:
    text = f.read()

# 分词
word_list = jieba.cut(text)

# 读取自定义图片
mask = np.array(Image.open("mask.png"))

# 设置字体路径
font_path = "msyh.ttc"

# 生成词云图
wordcloud = WordCloud(font_path=font_path, mask=mask,
                      background_color="white", mode="RGBA").generate(text)
color = ImageColorGenerator(mask)

# 显示词云图
plt.imshow(wordcloud.recolor(color_func=color), interpolation="bilinear")
plt.axis("off")
plt.show()

# 保存词云图
wordcloud.to_file("signature_wordcloud_custom.png")

示例二

如果你希望词云图中的词语按照字体大小排序,请使用以下代码:

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

# 读取签名数据
with open("signature.txt", "r", encoding="utf-8") as f:
    text = f.read()

# 分词
word_list = jieba.cut(text)

# 读取自定义图片
mask = np.array(Image.open("mask.png"))

# 设置字体路径
font_path = "msyh.ttc"

# 生成词云图
wordcloud = WordCloud(font_path=font_path, mask=mask, max_words=100,
                      max_font_size=200, background_color="white", mode="RGBA").generate(text)
color = ImageColorGenerator(mask)

# 显示词云图
fig, ax = plt.subplots()
ax.imshow(wordcloud.recolor(color_func=color), interpolation="bilinear")
ax.axis("off")

# 排序
words = list(wordcloud.words_.keys())
counts = list(wordcloud.words_.values())
idx = np.argsort(np.array(counts))[::-1]

# 生成legend
for i, w in enumerate(np.array(words)[idx][:10]):
    ax.text(250, 100+i*50, w, fontsize=20, color="black", ha="center", va="center")

plt.show()

# 保存词云图
wordcloud.to_file("signature_wordcloud_sorted.png")

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何用Python制作微信好友个性签名词云图 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • 从Python Pandas的日期中获取月份

    获取Pandas日期中的月份可以使用Pandas库提供的.dt.month属性。下面是详细的步骤: 创建一个包含日期数据的Pandas Series对象 import pandas as pd # 创建日期序列 dates = pd.Series([‘2010-01-01’, ‘2011-01-01’, ‘2012-01-01’, ‘2013-01-01’]…

    python-answer 2023年3月27日
    00
  • 详解Pandas的三大利器(map,apply,applymap)

    详解Pandas的三大利器(map, apply, applymap) 在数据处理中,Pandas是一个常用的数据处理库,可以方便快捷地进行数据清洗、分析和处理。Pandas中的DataFrame类是一个常用的数据容器,但是很多时候需要对其中的数据进行处理和转换,这时候就需要用到Pandas的三大利器:map、apply和applymap。 map map函…

    python 2023年5月14日
    00
  • 使用pandas.apply()将一个函数应用到Dataframe的每一行或每一列

    使用pandas.apply()将一个函数应用到Dataframe的每一行或每一列,可以用于数据清洗、特征工程等操作。下面我会详细讲解该过程,并通过实例说明。 函数定义 首先需要定义一个可以被应用的函数,即将要被应用的函数。下面我们以计算每行的和为例定义一个函数: def sum_row(row): return row.sum() 以上函数传入一行数据,返…

    python-answer 2023年3月27日
    00
  • Python matplotlib实现折线图的绘制

    下面我来详细讲解一下Python Matplotlib实现折线图的绘制步骤: 1. 准备数据 在绘制折线图前,我们需要准备好数据。假设我们要绘制一个公司五年内收入的折线图,数据如下: year = [2015, 2016, 2017, 2018, 2019] income = [1000, 1500, 2000, 3000, 5000] 其中,year表示年…

    python 2023年6月13日
    00
  • 用Pandas绘制时间序列图或线图

    当我们需要呈现时间序列数据时,Pandas提供了一些方便的绘图工具。这包括了时间序列图和线图。下面我来详细介绍如何用Pandas绘制时间序列图或线图的完整攻略,并提供相应的实例说明。 1.准备数据 Pandas中的时间序列数据一般是通过datetime来表示的。下面我们来生成一个简单的时间序列数据集,包括时间和数值两个维度。 import pandas as…

    python-answer 2023年3月27日
    00
  • 检查Pandas数据框架中的NaN

    在 Pandas 中,NaN 是指 Not a Number,代表缺失值或无效值。检查 Pandas 数据框架中的 NaN 是数据预处理中重要的一步。下面介绍如何进行完整的 NaN 检查: 1. 查看数据框架中的缺失值 可以使用 isnull() 或 isna() 函数查看数据框架中缺失值的情况。这两个函数的作用相同,都返回一个布尔型数组,表示数据框架中缺失…

    python-answer 2023年3月27日
    00
  • 用谷歌表格和Pandas收集数据

    收集数据是数据分析的第一步,谷歌表格和Pandas是两种很好用的工具,分别可以用来进行在线数据收集和离线数据收集。 用谷歌表格进行数据收集 谷歌表格是一款在线的电子表格软件,允许用户通过浏览器访问,可以免费创建、编辑、保存和共享电子表格,支持多种文件格式。使用谷歌表格可以进行数据收集,具体步骤如下: 步骤一:创建谷歌表格 登录谷歌账号; 进入谷歌文档页面,选…

    python-answer 2023年3月27日
    00
  • python 给DataFrame增加index行名和columns列名的实现方法

    要为 DataFrame 增加 index 行名和 columns 列名,可以使用 pandas 库中的 index 和 columns 属性。 为 DataFrame 增加 index 行名 示例一: import pandas as pd # 创建一个二维数据 data = { "name": ["Tom", &q…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部