使用python对微信好友进行数据分析

用Python爬了我的微信好友 随着微信的普及,越来越多的人开始使用微信。微信渐渐从一款单纯的社交软件转变成了一个生活方式,人们的日常沟通需要微信,工作交流也需要微信。微信里的每一个好友,都代表着人们在社会里扮演的不同角色。 今天这篇文章会基于Python对微信好友进行数据分析,这里选择的维度主要有:性别、头像、签名、位置,主要采用图表和词云两种形式来呈现结果,其中,对文本类信息会采用词频分析和情感分析两种方法。常言道:工欲善其事,必先利其器也。在正式开始这篇文章前,简单介绍下本文中使用到的第三方模块: itchat:微信网页版接口封. 阅读详情

微信好友分析

基于 Python 对微信好友进行数据分析,这里选择的维度主要有:性别、头像、签名、位置,主要采用图表和词云两种形式来呈现结果,其中,对文本类信息会采用词频分析和情感分析两种方法。在正式开始这篇文章前,简单介绍下本文中使用到的第三方模块:

  • itchat:微信网页版接口封装Python版本,在本文中用以获取微信好友信息。

  • jieba:结巴分词的 Python 版本,在本文中用以对文本信息进行分词处理。

  • matplotlib: Python 中图表绘制模块,在本文中用以绘制柱形图和饼图

  • snownlp:一个 Python 中的中文分词模块,在本文中用以对文本信息进行情感判断。

  • PIL: Python 中的图像处理模块,在本文中用以对图片进行处理。

  • numpy: Python中 的数值计算模块,在本文中配合 wordcloud 模块使用。

  • wordcloud: Python 中的词云模块,在本文中用以绘制词云图片。

  • BDP: 可视化数据分析工具

    首先导入用到的第三方模块

     import itchat
     import numpy as np
     import os
     from collections import Counter
     import matplotlib.pyplot as plt
     plt.rcParams['font.sans-serif']=['SimHei']#绘图时可以显示中文
     plt.rcParams['axes.unicode_minus']=False#绘图时可以显示中文
     from wordcloud import WordCloud,STOPWORDS,ImageColorGenerator
     from PIL import Image
     import math
     import re
     import snownlp
     import jieba
     import jieba.analyse
     import pandas as pd
    
    

分析微信好友数据的前提是获得好友信息,通过使用 itchat 这个模块

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

同平时登录网页版微信一样,我们使用手机扫描二维码就可以登录,这里返回的friends对象是一个集合

好友性别

分析好友性别,我们首先要获得所有好友的性别信息,这里我们将每一个好友信息的Sex字段提取出来,然后分别统计出男、女 和保密的数目,我们将这三个数值组装到一个列表中,即可使用matplotlib模块绘制出饼图来,其代码实现如下:

def fun_analyse_sex(friends):
     # 性别分析
     sexs = list(map(lambda x:x['Sex'],friends[1:]))#收集性别数据
     counts = list(map(lambda x:x[1],Counter(sexs).items()))#统计不同性别的数量
     counts = sorted(counts)
     labels = ['保密','男','女']#2:女,1:男,0:保密
     colors = ['red','yellow','blue']
     plt.figure(figsize=(20,8), dpi=80)
     plt.axes(aspect=1)
     plt.pie(counts, #性别统计结果
     labels=labels, #性别展示标签
     colors=colors, #饼图区域配色
     labeldistance = 1.1, #标签距离圆点距离
     autopct = '%3.1f%%', #饼图区域文本格式
     shadow = False, #饼图是否显示阴影
     startangle = 90, #饼图起始角度
     pctdistance = 0.6 #饼图区域文本距离圆点距离
     )
     plt.legend(loc='upper left')#标签位置
     plt.title(u'%s的微信好友性别比例' % friends[0]['NickName'])
     plt.show()
  • 结果如下:

在这里插入图片描述

生成头像

头像分析有两部分,(1)保存好友头像;(2)用所有好友头像生产一张图片

  • 下载好友头像

通过用户名找到对应每个好友的头像,写入HeadImages目录中

    def get_HeadImage(friends):
        # 保存好友头像
        if "HeadImages" not in os.listdir():
            os.mkdir('HeadImages')
        os.chdir("HeadImages")
    
        for friend in friends:
            img = itchat.get_head_img(userName=friend["UserName"])
    
            with open(friend['UserName'].replace('|', '') + '.jpg', "wb") as f:
                print("正在下载%s.jpg" % friend["NickName"])
                f.write(img)
  • 生产图片

使用PIL模块的Image方法,生成一张图片,再把每一张好友头像缩小贴到这张图片上

    def all_head_images():
        # 把所以好友头像生成一张图片
        x = 0
        y = 0
        images = os.listdir("HeadImages")
        print(len(images))
        new_image = Image.new('RGBA', (640, 640))
        # width = int(math.sqrt(640*640 / len(images)))
        # line_num = int(640 / width)
        line_num = int(math.sqrt(len(images)))
        width = int(640/line_num)
        for i in images:
            image = Image.open('HeadImages/' + i)
            image = image.resize((width, width), Image.ANTIALIAS)
            new_image.paste(image, (x*width, y*width))
            x += 1
            if x == line_num:
                x = 0
                y += 1
        new_image.save('all.png')
  • 效果
    在这里插入图片描述
好友签名分析

好友签名分析,也分为两部分:(1)切词构造词云;(2)文本分析,生活态度

  • 构造词云
    def fun_analyse_Signature(friends):
        # 个性签名分析
        signatures = ''
        emotions = []
        for friend in friends:
            signature = friend['Signature']
            if signature != None:
                signature = signature.strip().replace("span","").replace("class","").replace("emoji","")#去除无关数据
                signature = re.sub(r'1f(\d.+)',"",signature)
            if len(signature) > 0:
                nlp = snownlp.SnowNLP(signature)
                emotions.append(nlp.sentiments)#nlp.sentiments:权值
                signatures += " ".join(jieba.analyse.extract_tags(signature,5))#关键字提取
        back_coloring = np.array(Image.open("xiaohuangya.jpg"))#图片可替换
        word_cloud2 = WordCloud(font_path = 'simkai.ttf',
                             background_color = 'white',
                             max_words = 1200,
                             mask = back_coloring,
                             margin = 15)
        word_cloud2.generate(signatures)
        image_colors = ImageColorGenerator(back_coloring)
        plt.figure(figsize=(20, 8),dpi=160)
        plt.imshow(word_cloud2.recolor(color_func=image_colors))
        plt.axis("off")
        plt.show()
        word_cloud2.to_file("signatures.jpg")
        #人生观
        count_positive = len(list(filter(lambda x:x>0.66,emotions)))#大于0.66为积极
        count_negative = len(list(filter(lambda x:x<0.33,emotions)))#小于0.33为消极
        count_neutral = len(list(filter(lambda x:x>=0.33 and x <= 0.66,emotions)))
        labels = [u'积极',u'中性',u'消极']
        values =(count_positive,count_neutral,count_negative)
        plt.rcParams['font.sans-serif'] = ['simHei']
        plt.rcParams['axes.unicode_minus'] = False
        plt.xlabel("情感判断")
        plt.ylabel("频数")
        plt.xticks(range(3),labels)
        plt.legend(loc='upper right')
        plt.bar(range(3),values,color='rgb')
        plt.title(u'%s的微信好友签名信息情感分析情况' % friends[0]['NickName'])
        plt.show()
  • 结果

在这里插入图片描述
在这里插入图片描述

好友位置

将姓名、省份写入csv文件

    def analyseLocation(friends):
        # 定义数据头
        headers = ['NickName','Province']
        with open('location.csv','w',encoding='utf-8',newline='',) as csvFile:
            # DictWriter以字典的形式写入内容
            # 设置写入格式
            writer = csv.DictWriter(csvFile, headers)
            #  writeheader()实现添加文件头(数据名)
            writer.writeheader()
            for friend in friends[1:]:
                # 定义一个字典
                row = {}
                # 按属性写入
                row['NickName'] = friend['NickName']
                row['Province'] = friend['Province']
                # 将每个字典写入为一行
                writer.writerow(row)

现在当前目录会生成一个location.csv的文件,保存了所有好友的位置信息

然后使用BDP进行分析
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

最终得到好友位置分布图

在这里插入图片描述

华南理工大学电子与信息学院23年预推免复试面试经验贴 阅读详情

相关推荐

别再搞混了!MATLAB通信仿真中EbN0转SNR的保姆级公式推导与避坑指南

本文深入解析MATLAB通信仿真中EbN0与SNR转换的核心公式,揭示数字仿真与理论系统的关键差异。通过真实案例展示错误参数设置导致的隐蔽问题,并提供完整的参数自查清单和正确实现代码,帮助工程师和学生避免常见错误,确保仿真结果准确可靠。

weixin_28746223的博客 348

用Python获取了微信好友数据,进行可视化分析发现~

大家好!因为无事可做,就想着看看爬取一下微信好友,然后理智的分析一波~~我们这次使用的是Itchat库来获取的微信好友数据。

大模型教程的博客 2033

tewa-707e光猫超级密码获取方法

这款光猫很魔性,没有WIFI,没有USB接口,没有Telnet,试了很多方法去获取超级密码都不行。解密时可能会报错,可能是文件后面部分不晓得是咋拼接过来的,用AES解密时分组数据有问题。3、这个文件是用AES加密了的,直接打开是乱码,所以得用AES解密,key为16个字节的 x00。打开解出来的文件,然后搜索 telecomadmin,就可以发现超级密码了。参考资料里面的光猫不是同一款,但解密的方法基本相同的。

shaowl111的专栏 1万+

python爬取微信好友信息并根据导出的csv做数据分析

写在前面: 之前了解过一点python,前两天看了一篇文章,一件有趣的事:我用 Python 爬了爬自己的微信朋友,感觉还挺有意思的,不过文章看完了,自己敲代码的时候还是有点坑踩进去的,所以我写篇文章来填坑啦!顺便把省份统计拿出来做个范例。 正文 pip install itchat,pip install pandas安装依赖。 多说一句,一般写python都会在文件开头加一句 #coding=...

Run_youngman的博客 2599

运维简历优化指南,DeepSeek助您运维简历秒变高分!

例如,当掌握了新的运维技术,如 Serverless 架构的运维管理,就将其添加到简历的专业技能部分,并简要描述在相关项目中的应用情况和成果,如 “在 [项目名称] 中,负责 Serverless 架构的运维工作,成功实现了应用的低成本、高弹性运行,降低了运维成本 30%”。上传简历至 DeepSeek,并输入指令:“请根据以下岗位招聘要求,帮我重新解构我的简历,按照【教育背景→实习经历→项目经历→个人评价→技能证书】的模块,输出一份符合下述岗位的简历,提升我的求职竞争力。

大模型大数据攻城狮的专栏 1469

Raspberry Pi Pico + Inmp441麦克风(Pio模拟I2s)<2>

摘要:本文介绍了在Raspberry Pi Pico上使用PIO(Programmable I/O)接收I2S数字麦克风音频数据并保存为WAV文件的方法。项目采用双PIO状态机设计,一个生成I2S时钟信号(WS+SCK),另一个接收24位左声道数据并转换为16位格式。文章详细说明了接线方式、参数设置、WAV文件头构造、PIO汇编程序实现以及数据转换处理流程。项目在MicroPython环境下实现16kHz采样率、6秒时长录音,具有时序精确、稳定可靠的特性,并提供了进一步拓展的可能性,如双声道支持、实时频谱分

技术需要沉淀,需要碰撞。 660

数据分析师——如何用Python对微信好友进行数据分析

随着微信的普及,越来越多的人开始使用微信。微信渐渐从一款单纯的社交软件转变成了一个生活方式,人们的日常沟通需要微信,工作交流也需要微信。微信里的每一个好友,都代表着人们在社会里扮演的不同角色。工作中,微信代表了职业形象,对于微信好友的统计可以快速攫取到目标用户 达到事半功倍的效果。那么如何利用算法统计所有人呢?地区、年龄、性别、头像……读完这篇文章,回去试试吧~

weixin_72959097的博客 139

PPT制作能力在职场中真的重要吗?一定要美术功底才能学好PPT吗?

我推出PPT技能培训专栏啦!好的PPT可以让你事半功倍、2023拥有PPT能力还可以让你具备一门极有价值的斜杠能力。更多内容请进:梦幻训练营专栏。专栏内会用本人积累的近10年的PPT学习方法论在短时间内教会你如何制作出精美绝伦的PPT,每篇教程后还会免费赠送一些小福利,不可多得。

打造全国最全的AI Agent开发知识领域的博客 728

微信好友数据分析

一、所需安装库 * itchat:微信网页版接口封装Python版本,在本文中用以获取微信好友信息。 * jieba:结巴分词的 Python 版本,在本文中用以对文本信息进行分词处理。 * matplotlib: Python 中图表绘制模块,在本文中用以绘制柱形图和饼图 * snownlp:一个 Python 中的中文分词模块,在本文中用以对文本信息进行情感判断。 * PIL: Python...

weixin_30597269的博客 493

【WorkBuddy专栏32】从「分文件夹」到「组队打仗」——WorkBuddy v5.0项目模式深度拆解

【WorkBuddy专栏32】从「分文件夹」到「组队打仗」——WorkBuddy v5.0项目模式深度拆解

AI人人懂 297

RK3568笔记十七:LVGL v8.2移植

若该文为原创文章,转载请注明原文出处。本文介绍嵌入式图形库移植到Linux开发板ATK-RK3568上的步骤。

4232

微信好友大数据分析

微信好友数据分析 这里很多工作量,参考了该篇博客,在此致谢,传送门如下: 一件有趣的事:我用 Python 爬了爬自己的微信朋友 不过原博客代码不是特别全,有些没有放出来,而且代码都是图片截图,比较模糊,所以我来整理一下我的代码,贴上来,同时也进行一定的讲解。 (不想看讲解,想用完整代码的,可以戳下面的传送门,我把代码上传到了我的Github里了:GIthub代码传送门) 下面来介绍所有的代码: ...

CodeSausage的博客 2691

企业级 Token 中转架构设计:高并发、多模型、费用监控一次搞定

摘要:本文针对企业级AI开发中的多模型接口混乱、高并发稳定性差及Token费用失控等痛点,提出一套2026年企业级Token中转架构解决方案。该方案采用五层分层设计(接入层、网关层、调度层、服务层、存储层),实现多模型统一接口、智能路由、高并发限流容错及精细化成本监控。核心功能包括:异构模型标准化接入、动态路由策略(场景/成本/负载/容灾)、多级限流熔断机制、全链路Token计费与安全防封体系(指纹清洗、IP池隔离)。通过分层解耦与模块化设计,企业可降低50%成本、提升99%稳定性,并避免封号风险。文章还提

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 146

python微信好友分析_使用Python获取微信好友并进行数据分析

最近看到微信公众号推荐了些文章,有关于用Python爬取自己的微信好友,然后做了一些分析。其实之前我也有过这样的想法,一直没去实现。刚好今天元旦,回公司写了这么一个小项目。其实获取微信好友很简单,有现成的模块直接使用,这是itchat的官网https://itchat.readthedocs.io/zh/latest/ 。首先通过pip3进行安装pip3 install itchat然后导入itc...

weixin_39747568的博客 363

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

使用wxBot和Python做微信好友数据分析

为了拿pandas练手,做了这个东西,分享一下给大家,有需要的可以参考,不喜勿喷 1.使用wxBot获取到微信好友列表 2.下载好wxBot后根据文档提示运行起来,登录微信 3.在当前目录下 找到 temp/contact_list.json 4.在 json-csv网站 把Json文件转换成CSV文件 # -*- coding: utf-8 -*- #导入库 import re import ...

weixin_33716154的博客 232

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Python实现微信好友数据分析

作者:September 。致谢:微信公众号、data挖掘机。 说明:本文是笔者看到一篇文章《基于Python实现的微信好友数据分析》,也正好想简单学习Python,据说Python很简洁,也的确如此。 声明:本文中的代码是从公众号中弄过来的,但是没有格式,自己通过简单学习,掌握了一点点知识,也将代码改好了,再后来看到data挖掘机的博客,发现了他写的一些优化,感觉也是很棒,Code详见Git...

Coders的博客 911

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

用Python对微信好友进行分析

用了微信几年了,微信号有也不少了,但是真正了解自己的好友吗?好友最多的城市是哪个?好友男女比例是多少?好友签名都是什么?今天我们来充分了解自己的微信好友。 运行平台: Windows Python版本: Python3.6 IDE: Sublime Text 其他工具: Chrome浏览器 1、准备工作 1.1 库介绍 1.2 wxpy库安装 1.3 登录微信 ...

C与Python实战 9985

python itchat判断加入新新好友_Python利用itchat对微信中好友数据实现简单分析的方法...

前言最近在一个微信公众号上看到一个调用微信 API 可以对微信好友进行简单数据分析的一个包 itchat 感觉挺好用的,就简单尝试了一下。库文档说明链接在这: itchat安装在终端中输入以下命令,完成微信的API包itchat的安装。我们这里使用python3的环境(python2也是可行的):sudo pip3 install itchat --upgrade通过该命令判断是否安装成功:pyt...

weixin_39640773的博客 304

python调用bot登陆微信进行数据分析

python对微信进行数据分析 本文用到的包和工具如下: wxpy 微信团队用python写的面向对象模拟机器人登陆网页微信服务器,最为重要的是bot类和itchat类;具体看:https://wxpy.readthedocs.io/zh/latest/ pyecharts 百度收购了一个图形可视化javascript前端项目Echarts,该项目又扩展为pyecharts,可以动态渲染出国家、省...

青阳的博客 2167

python微信好友数据分析与聊天机器人

一、微信好友数据分析代码 from wxpy import * #导入函数 bot = Bot(cache_path=True) friend_all = bot.friends() print(friend_all[0].raw) len(friend_all) lis=[] for a_friend in friend_all: #获取好友数据并建立列表 ...

weixin_30731287的博客 159

用Python爬了微信好友,原来他们是这样的人...

随着微信的普及,越来越多的人开始使用微信。微信渐渐从一款单纯的社交软件转变成了一个生活方式,人们的日常沟通需要微信,工作交流也需要微信。微信里的每一个好友,都代表着人们在社会里扮演的不同角色。 今天这篇文章会基于Python对微信好友进行数据分析,这里选择的维度主要有:性别、头像、签名、位置,主要采用图表和词云两种形式来呈现结果,其中,对文本类信息会采用词频分析和情感分析两种方法。常言道:工欲善其事,必先利其器也。在正式开始这篇文章前,简单介绍下本文中使用到的第三方模块: itchat:微...

Python_xiaowu的博客 203

用 Python 爬了微信好友,原来他们是这样的人...

随着微信的普及,越来越多的人开始使用微信。微信渐渐从一款单纯的社交软件转变成了一个生活方式,人们的日常沟通需要微信,工作交流也需要微信。微信里的每一个好友,都代表着人们在社会里扮演的不同角色。 今天这篇文章会基于Python对微信好友进行数据分析,这里选择的维度主要有:性别、头像、签名、位置,主要采用图表和词云两种形式来呈现结果,其中,对文本类信息会采用词频分析和情感分析两种方法。常言道:工欲善其事,必先利其器也。在正式开始这篇文章前,简单介绍下本文中使用到的第三方模块: itchat:微信

weixin_56659172的博客 229

使用wxpy模块了解微信好友

网上看了一篇python文章,内容简单有趣,正好可以练习一下。原文连接:http://mp.weixin.qq.com/s/oI2pH8uvq4kwYqc4kLMjuA 一、环境:Windows+python3+eclipse 二、用到的package:首先就是 wxpy ,cmd控制台使用 pip install wxpy 即可安装。   还需要安装几个后面统计数据和画图的pac...

diantong2260的博客 244

我的微信好友

项目:我的微信好友 项目内容 任务0 - 登陆微信,并通过向文件传输助手发送打招呼信息 任务1 - 统计你的微信好友的男女比例 任务2 - 分析微信好友的地域分布 任务3 - 生成微信好友的签名词云图 任务4 - 对签名进行情感分析 任务0. 登陆并发送打招呼信息 登陆 在这一个章节中,笔者将导入itchat这个包,并调用login()函数登陆网页微信,扫描二维码以登陆网页微信。 导入项目中所需要的包 import pandas as pd

weixin_43998698的博客 540

用 Python 快速分析你的微信好友

写在前面   itchat基于python开发,封装了大量调取微信功能的接口,使得开发人员可以快速基于这个框架来完成一些微信操作,在这之前我们要做的就是扫码登录,实际上这相当于登录网页版的微信(新注册的账号似乎不支持)。更多介绍在官网和Github上都有详细的文档。   下面介绍基于itchat完成微信数据(好友、群聊等)的分析和展示。 环境说明 python3 numpy matp...

happyJared 632

Python有趣的微信好友数据分析

Python获取微信好友信息进行分析安装itchat使用itchat登录微信获取好友信息遍历好友列表,保存好友列表和头像对好友头像进行拼接性别统计朋友圈个性签名生成词云图好友的城市分布 这件好玩的事情对于熟练掌握Python的大神简直就是小菜一碟,但对于我而言还是有点难度的,所以参考了一些大神的博客总结了一番,在正式之前,先把python环境搭建好 安装itchat pip install it...

weixin_42947716的博客 398
下一篇: SpringBoot利用ELK实现日志收集
_zxue
博客等级 码龄8年 4593粉丝 18原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_zxue

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值