利用Python统计微信联系人男女比例以及简单的地区分布
寒暄的话不多说,直接进入主题。
运行效果图:
【准备环境】
Python版本:v3.5及其以上
开发工具:随意,此处使用Pycharm
【依赖包】
1、itchat (CMD运行:pip install itchat 进行安装)
2、pycharts (CMD运行:pip install pyecharts 进行安装)
itchat包是对网页版微信相关接口封装的一个第三方包,目前来说比较好用,一会代码里面会用到相关接口(注释说明);
pycharts包进行图表的创建,只是用到了其初级功能,大家有时间可以将代码改改,生成更全面直观的图表,代码中使用的柱状图,稍显low,可以升级为全国热点图,这样人员的地区分布就更加直观了。
代码:
import itchat
from collections import Counter
from pyecharts import Bar dict_sex = {}
count_city = None # itchat微信登录,hotReload表示热登录,如果是True,下一次就不用扫码了(时间不能过长),会在根目录生成一个 itchat.pkl 的文件
itchat.auto_login(hotReload=True)
# itchat 的get_friends接口,获取微信好友列表,返回的列表第一位是你自己,如果想过滤掉自己,改为:itchat.get_friends()[1:]
member_list = itchat.get_friends()[0:] def calc_all_sex():
"""
微信联系人总男女信息
:return:
"""
man = woman = others = 0
city = []
for index, name in enumerate(member_list):
print("\t{}、{}({})".format(index, name["RemarkName"] if name["RemarkName"] is not "" else name["NickName"], name["UserName"]))
sex = name["Sex"]
if sex == 1:
man += 1
elif sex == 2:
woman += 1
else:
others += 1
if name["City"] == "":
city.append("未知城市")
else:
city.append(name["City"]) global count_city
count_city = Counter(city)
total = len(member_list)
man_percent = (float(man) / total * 100)
woman_percent = (float(woman) / total * 100)
others_percent = (float(others) / total * 100) print("\n>>>>>>>>>>>>>微信联系人总男女信息:")
print("男性好友:%.2f%%" % man_percent)
print("女性好友:%.2f%%" % woman_percent)
print("其 它:%.2f%%" % others_percent) class PeopleInfo:
def __init__(self, man_, woman_, _others, total_):
self.man = man_
self.woman = woman_
self.others = _others
self.total = total_ def count(dict_={}):
"""
计算各个地区的男女人数
:param dict_:
:return:
"""
print("\n>>>>>>>>>>>>>各地区男女分布信息:")
for val in dict_:
city_tmp = "" if val == "未知城市" else val
man = woman = others = 0
for member in member_list:
if member["City"] == city_tmp:
sex = member["Sex"]
if sex == 1:
man += 1
elif sex == 2:
woman += 1
else:
others += 1
people_info = PeopleInfo(man, woman, others, dict_[val])
dict_sex[val] = people_info
print("【{}】男性:{},女性:{},其它:{}".format(city_tmp, man, woman, others)) def count_sex_area():
"""
统计联系人性别、地区
:return:
"""
calc_all_sex()
attr = ["{}".format(i) for i in count_city]
count(count_city)
v1 = []
man_count = []
woman_count = []
others_count = []
for i in attr:
v1.append(count_city[i])
man_count.append(dict_sex[i].man)
woman_count.append(dict_sex[i].woman)
others_count.append(dict_sex[i].others) bar = Bar(title="{}的微信联系人分布".format(member_list[0]["NickName"]), subtitle="微信联系人分布情况", width=2024, height=768)
bar.add("地区人数", attr, v1, mark_line=["average"], mark_point=["max", "min"])
bar.add("男性", attr, man_count, mark_line=["average"], mark_point=["max", "min"])
bar.add("女性", attr, woman_count, mark_line=["average"], mark_point=["max", "min"])
bar.render(path="地区统计.html") def get_signatare():
"""
获取微信联系人的签名信息
:return:
"""
for member in member_list:
signatare = str(member["Signature"])
print("\n{}:\n\t>>>>>:{}".format(member["RemarkName"], signatare)) if __name__ == '__main__':
count_sex_area()
# get_signatare()
利用Python统计微信联系人男女比例以及简单的地区分布的更多相关文章
- 利用python进行微信好友分析
欢迎python爱好者加入:学习交流群 667279387 本文主要利用python对个人微信好友进行分析并把结果输出到一个html文档当中,主要用到的python包为itchat,pandas,py ...
- 利用python实现微信小程序游戏跳一跳详细教程
利用python实现微信小程序游戏跳一跳详细教程 1 先安装python 然后再安装pip <a href="http://newmiracle.cn/wp-content/uploa ...
- 利用python在微信群中签到、抢沙发(适用于任何账号)
利用python在微信群中签到.抢沙发 注意 程序仅能在电脑上运行,运行时需要保证群界面在最前端且不被移动. 背景 我是一名高中生(2020年),疫情期间,在家上网课,有的老师让我们在班群里签到. 其 ...
- 如何利用python制作微信好友头像照片墙?
这个不难,主要用到itchat和pillow这2个库,其中itchat用于获取微信好友头像照片,pillow用于拼接头像生成一个照片墙,下面我简单介绍一下实现过程,代码量不多,也很好理解,实验环境wi ...
- 利用Python查看微信共同好友
思路 首先通过itchat这个微信个人号接口扫码登录个人微信网页版,获取可以识别好友身份的数据.这里是需要分别登录两人微信的,拿到两人各自的好友信息存到列表中. 这样一来,查共同好友就转化成了查两个列 ...
- 利用Python进行数据分析(4) NumPy基础: ndarray简单介绍
一.NumPy 是什么 NumPy 是 Python 科学计算的基础包,它专为进行严格的数字处理而产生.在之前的随笔里已有更加详细的介绍,这里不再赘述. 利用 Python 进行数据分析(一)简单介绍 ...
- Python+ITchart实现微信中男女比例,城市分布统计并可视化显示
直接上代码: import itchat import os import csv import pandas as pd from pyecharts import Bar,Pie,Geo impo ...
- 利用python统计代码行
参加光荣之路测试开发班已三月有余,吴总上课也总问“ 咱们的课上了这么多次了大家实践了多少行代码了?”.这里是一个一脸懵逼的表情.该怎么统计呢?一个个文件数当然不可取,能用代码解决的事咱们坚决不动手.最 ...
- Python分析微信好友性别比例和省份城市分布比例
如需转发请注明:小婷儿的博客:https://www.cnblogs.com/xxtalhr/p/10642241.html 一.安装模块 pip install itchat pip install ...
随机推荐
- PHP的CURL的POST/GET访问
本文出至:新太潮流网络博客 /** * [curl以GET的方式访问] * @E-mial wuliqiang_aa@163.com * @TIME 2017-04-07 * @WEB http:// ...
- Oracle EBS SLA取值
-- 从GL总账追溯到 => 子分类账SLA => 子模块AP.AR等 SELECT xep.name, -- 法人主体 xep.legal_entity_identifier, -- 法 ...
- MySQl新特性 GTID
GTID简介 概念 全局事务标识符(GTID)是创建的唯一标识符,并与在源(主)服务器上提交的每个事务相关联.此标识符不但是唯一的,而且在给定复制设置中的所有服务器上都是唯一的.所有交易和所有GTID ...
- postgresql排序分页时数据重复问题
当同时排序又分页时,如果排序的字段X不是唯一字段,当多个记录的X字段有同一个值时顺序是随机的. 这个有可能造成分页时数据重复的问题.某一页又把上一页的数据查出来了,其实数据库只有一条记录. 解决办法: ...
- tar压缩/解压用法
格式:tar zcvf 压缩后的路径及包名 你要压缩的文件 z:gzip压缩 c:创建压缩包 v:显示打包压缩解压过程 f:接着压缩 t:查看压缩包内容 x:解压 X:指定文件列表形式排除不需要打包压 ...
- How to add hyperlink in JLabel
You can do this using a JLabel, but an alternative would be to style a JButton. That way, you don't ...
- 更改win系统的鼠标样式
一.找一个你心仪的鼠标样式(.cur文件),并放到 C:\Windows\Cursors 目录下 二.打开,控制面板 -> 硬件和声音 -> 鼠标 ,如下图: 三.浏览鼠标目录,找到你存放 ...
- sdn2017 第三次作业
1.阅读: 阅读<图解openflow>第一二章(请自己查找相应书籍) 阅读文章:http://www.sdnlab.com/19777.html 阅读<重构网络>第一二章 2 ...
- 第二次项目冲刺(Beta版本)2017/12/10
一.任务分布 二.燃尽图 三.站立式会议 1.照片(再给我两分钟) 2.任务安排 四.总结 冲刺的最后一天了,时间安排的不够好,还有部分功能没有完成,大家都尽力了,我们后续会抓紧时间完成项目.
- git pull与本地修改冲突
1.先将本地修改存储起来 $ git stash 这样本地的所有修改就都被暂时存储起来 . $ git stash list 可以看到保存的信息: git stash暂 ...