上周末我抽空做了个一直想做的实验:把微信好友的数据完整地拉下来,做一次纯个人向的数据分析和可视化。最开始只是因为好奇——想知道自己的好友男女比例到底是不是传言中的“三七开”,后来做着做着发现,这个项目虽然入口很浅,但涉及数据采集、清洗、分析、可视化一整条链路,几乎是把Python数据分析的核心流程完整过了一遍。这篇文章把整个过程复盘出来,包含完整代码、实现思路和我踩过的坑,适合有Python基础、想做一个能写进简历或给自己看的数据分析实战项目的朋友参考。
项目本身不复杂,也不依赖深度学习或大模型,就是一个典型的数据分析项目:采集微信好友的昵称、性别、地区、个性签名、头像等基础信息,然后用pandas做清洗统计,再结合matplotlib、pyecharts、wordcloud等可视化库把结果变成直观的图表。整个过程跑通后,你得到的不仅是一堆图表,更是一套完整的数据分析思维框架。
1. 项目概述:这个教程要解决什么问题
1.1 为什么想做微信好友数据分析
先说动机。微信是目前社交关系沉淀最深的产品,好友列表里的性别、地区、签名,本质上是高度真实的人群画像数据。市面上有很多所谓的“微信好友分析工具”,但大多数是黑盒,有的甚至会上传你的好友数据到服务器,隐私风险很高。自己写脚本的好处有两个:一是完全本地运行,数据不过第三方服务器;二是整个过程可控,每一步做了什么、怎么处理的,心里有数。
另一个原因是技术上的。数据分析项目最怕的是“没有像样的数据源”,大部分教程用的都是网上现成的csv或者kaggle下载的数据集,做出来总觉得隔了一层。微信好友数据是我们天天接触、有真实体感的个人数据,分析结果出来之后你能立刻判断对不对——比如你的好友集中在哪些城市、男女比例是否符合你对社交圈的认知,这种“验证感”是虚拟数据集给不了的。
1.2 项目目标与适合人群
这个项目的核心目标可以拆成四个递进的层次:
- 采集层:通过Python脚本登录微信,拉取好友的基本信息列表,保存成结构化数据;
- 清洗层:对性别、地区、签名等字段做标准化处理,去掉空值和噪音;
- 分析层:统计男女比例、地域分布、签名关键词频率等关键指标;
- 可视化层:把统计结果制作成柱状图、地图、词云、照片墙,甚至拼成一屏可视化大屏。
适合人群方面,我的建议是:如果你已经掌握了Python基础语法,会一些pandas和matplotlib的简单操作,但缺少一个完整的实战项目来串联这些知识,这个项目非常适合你。它的技术门槛不高,但涉及的知识点密度相当大,可以一次性把“数据获取→清洗→分析→可视化的标准流程”走通。
1.3 整体技术架构
技术选型上没有用重型框架,纯Python脚本即可完成。核心依赖如下:
- itchat:基于web微信协议的第三方库,负责扫码登录、获取好友信息;
- pandas:表格数据处理,负责数据清洗和统计分析;
- matplotlib:基础图表绘制;
- pyecharts:生成交互式图表和可视化大屏的HTML文件;
- wordcloud / stylecloud:个性签名词云图;
- Pillow:头像下载后的拼图处理;
- jieba:中文分词,用于个性签名的关键词提取。
需要说明的是,pyecharts有两个大版本:0.5.x和1.x。两个版本的API差异很大,网上很多教程还是0.5.x的写法,安装后直接from pyecharts import Bar就能用;而1.x要用from pyecharts.charts import Bar。我建议新项目直接用1.x版本,语法更规范,文档也更清楚。本文代码基于pyecharts 1.x编写。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 数据获取:先拿到一份“干净”的好友列表
2.1 方案选型:为什么优先选择itchat
在动手写代码之前,最关键的问题是“数据从哪来”。目前社区里常见的方式有三种:第一种是itchat这类web微信接口库直接拉取,第二种是从微信电脑版的备份数据库里解析,第三种是手动复制粘贴。第三种显然是反人类的,我直接排除。第二种方案虽然稳定,但需要逆向解析sqlite数据库,而且微信每次升级都可能让解密方式失效,坑比较深,对新手不太友好。
itchat虽然也不是官方接口,但好处是封装彻底,几行代码就能拿到好友数据,适合快速验证想法。它的原理其实很简单:模拟浏览器向web微信的前端接口发请求,扫码登录后获取cookie,然后请求好友列表接口。当然,web微信本身已经被腾讯逐步收紧,现在很多新注册的微信号无法登录网页版。这点提前说清楚,如果你扫码后提示“该微信号无法登录网页版”,那就别折腾itchat了,直接用后面我会说的备用方案。
提示:不要拿你的主微信号去玩这种第三方登录,尤其是涉及支付、重要资料备份的账号,风险不可控。建议开一个小号,加一些测试好友后再跑。
2.2 采集流程与代码实现
数据获取的流程可以分为三步:扫码登录、拉取好友列表、逐字段存储。
第一步,安装依赖:
bash复制pip install itchat pandas matplotlib pyecharts wordcloud jieba pillow
第二步,登录并获取好友列表:
python复制import itchat
import pandas as pd
# 登录。hotReload=True会把登录状态缓存到本地文件,短时间内再次运行不用重新扫码。
itchat.auto_login(hotReload=True
