目的意义

查看自己微信好友男女比例
获取好友个性签名等分词生成词云图
好友地区分布图

数据来源

用自己的微信呗,难道还能用别人的不成。哈哈
其他数据:
链接:https://pan.baidu.com/s/1XtBFZOQDzXhj2UmCPU9rtw
提取码:ym3x
复制这段内容后打开百度网盘手机App,操作更方便哦

代码:


from pylab import mpl
import matplotlib.pyplot as plt
mpl.rcParams['font.sans-serif'] = ['SimHei']
import pandas as pd
import numpy as np
import jieba
from scipy.misc import imread
from wordcloud import WordCloud
import re
from pyecharts.charts import  Map
from pyecharts import options as opts
from wxpy import *# 登录操作
bot = Bot()
# 列举登录账号好友列表
all_friends = bot.friends()
# rint(all_friends)# 列举登录账号所关注的公众号
Official_Accounts = bot.mps()
# print(Official_Accounts)# 列举登录账号群聊列表
current_group_chat = bot.groups()
# print(current_group_chat)# 根据好友的备注名称搜索好友
friend = bot.friends().search('刘虎林')[0]
print("搜索好友:",friend)#搜索好友并发送消息
bot.friends().search("刘虎林")[0].send("hello")#向文件助手发送信息
bot.file_helper.send("hello")#2.1显示男女比例
sex_diet = {'male': 0 ,'female' : 0,'no_set':0}
for friend in all_friends:#print(friend.sex)if friend.sex == 1:sex_diet['male'] +=1elif friend.sex==2:sex_diet['female'] +=1elif friend.sex == 0:sex_diet['no_set'] +=1
print(sex_diet)
#2.2使用matplotlib可视化
slices = [sex_diet['male'],sex_diet['female'],sex_diet['no_set']]
activities = ['male','female','no_set']
col = ['r','m','g']
#startangle:开始绘图的角度,逆时针旋转
#shadow:阴影
#%1.1f%%:格式化字符串,整数部分最小1位,小数点后保留一位,%%:转义字符
plt.pie(slices,labels=activities,colors=col,startangle=90,shadow=True,autopct="%1.1f%%")
plt.title("微信好友比例图")
plt.show()#统计省份
province_dict = {'北京': 0, '上海': 0, '天津': 0, '重庆': 0, '河北': 0, '山西': 0, '吉林': 0, '辽宁': 0, '黑龙江': 0, '陕西': 0, '甘肃': 0,'青海': 0, '山东': 0, '福建': 0, '浙江': 0, '台湾': 0, '河南': 0, '湖北': 0, '湖南': 0, '江西': 0, '江苏': 0, '安徽': 0,'广东': 0, '海南': 0, '四川': 0, '贵州': 0, '云南': 0, '内蒙古': 0, '新疆': 0, '宁夏': 0, '广西': 0, '西藏': 0, '香港': 0,'澳门': 0, }
# 统计各省好友数量
for friend in all_friends:#print(friend,friend.province)if(friend.province in province_dict.keys()):province_dict[friend.province] +=1
#print(province_dict)#为了数据方便呈现,生成json array格式数据
data = []
for key,value in province_dict.items():data.append({'name':key,'value':value})
#print(data)
data1 = pd.DataFrame(data)
data1.columns = ['city','popu']
#print(data1)# 绘制城市分布图
map = Map().add("微信好友城市分布图", [list(z) for z in zip(data1['city'], data1['popu'])], "china").set_global_opts(title_opts=opts.TitleOpts(title="Map-VisualMap(连续型)"), visualmap_opts=opts.VisualMapOpts(max_=10))
map.render('ditu.html')#写文件  with as 自动执行f.close() a为末尾追加
def write_file(path,txt):with open(path,"a",encoding="gbk") as f:return f.write(txt)def  read_file(path):with open(path,"r",encoding="gbk") as f:return f.read()#统计登陆账号好友个性签名
for friend in all_friends:#print(friend ,friend.signature)#对数据进行清洗,将标点符号等对词频统计造成影响的因素剔除pattern = re.compile(r'[一-龥]+')#对某一个个性签名进行匹配,值匹配中文汉字,结果是列表filterdata = re.findall(pattern,friend.signature)#print(filterdata)write_file("signatures.txt",''.join(filterdata))
content = read_file("signatures.txt")
#输出内容:仅汉字
#print(content)#输出分词结果,结果为列表
segment = jieba.lcut(content)
#print(segment)#生成数据框,有一列元素 若字典键值有相同则取最后的值
words_df = pd.DataFrame({'segment':segment})
#print(words_df)
#停止词的读取,词云图不能有这些词  index_col=False:第一列不作为索引值
stopwords = pd.read_csv('stopwords.txt', index_col=False , sep=" ", names=['stopword'],encoding='gbk')
#print(stopwords)#查看停止词是否在分词数据框
#print(words_df.segment.isin(stopwords.stopword))#查看过滤停止词后的数据框 segment的分词是否在stopwords中
words_df = words_df[~words_df.segment.isin(stopwords.stopword)]
#查看分词的频数
words_stat = words_df.groupby(by=['segment'])['segment'].agg({'计数':np.size})
print(words_stat)#查看排序后的分词的频数,根据计数排序
words_stat = words_stat.reset_index().sort_values(by=["计数"],ascending = False)
#print(words_stat)#读取背景图片
color_mask = imread('black_mask.png')
#设置词云属性  1.设置字体可以显示中文  2.背景颜色  3 词云显示的最大词数 4. 设置背景图片  5.字体最大值
wordcloud = WordCloud(font_path="Hiragino.ttf",background_color = "gary",max_words=100,mask=color_mask,max_font_size = 100)#生成词云字典,获取词频最高的前100个词
word_frequence = {x[0]:x[1] for x in words_stat.head(100).values}
print(word_frequence)#绘制词云图
wordcloud.generate_from_frequencies(word_frequence)
wordcloud.to_file('ciyun_result.png')#对图像进行处理
plt.imshow(wordcloud)
plt.axis('off')
plt.show()

结果可视化



源码:

链接:https://pan.baidu.com/s/1GO4i-TXRBRdXyJDeApZ-2g
提取码:a7fd

Python数据分析项目-微信好友数据分析相关推荐

  1. 基于Python实现的微信好友数据分析——抓取好友性别、位置、头像签名

    最近微信迎来了一次重要的更新,允许用户对"发现"页面进行定制.不知道从什么时候开始,微信朋友圈变得越来越复杂,当越来越多的人选择"仅展示最近三天的朋友圈",大概 ...

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

    Python获取微信好友信息进行分析 安装itchat 使用itchat 登录微信 获取好友信息 遍历好友列表,保存好友列表和头像 对好友头像进行拼接 性别统计 朋友圈个性签名生成词云图 好友的城市分 ...

  3. python 微信数据_Python实现的微信好友数据分析功能示例

    本文实例讲述了python实现的微信好友数据分析功能.分享给大家供大家参考,具体如下: 这里主要利用python对个人微信好友进行分析并把结果输出到一个html文档当中,主要用到的python包为it ...

  4. python微信好友分析_基于python实现微信好友数据分析(简单)

    一.功能介绍 本文主要介绍利用网页端微信获取数据,实现个人微信好友数据的获取,并进行一些简单的数据分析,功能包括: 1.爬取好友列表,显示好友昵称.性别和地域和签名, 文件保存为 xlsx 格式 2. ...

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

    随着微信的普及,越来越多的人开始使用微信.微信渐渐从一款单纯的社交软件转变成了一个生活方式,人们的日常沟通需要微信,工作交流也需要微信.微信里的每一个好友,都代表着人们在社会里扮演的不同角色. 今天这 ...

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

    随着微信的普及,越来越多的人开始使用微信.微信渐渐从一款单纯的社交软件转变成了一个生活方式,人们的日常沟通需要微信,工作交流也需要微信.微信里的每一个好友,都代表着人们在社会里扮演的不同角色. 今天这 ...

  7. python开发程序知道微信好友是否已读信息吗_用Python来检测微信好友是否拉黑你...

    Python Python开发 Python语言 用Python来检测微信好友是否拉黑你 来自知乎,作者:林萌 链接:https://www.zhihu.com/question/307914345/ ...

  8. 用Python更加了解微信好友

    运行平台: Windows   Python版本: Python3.6   IDE: Sublime Text 1.准备工作 1.1 库介绍 只有登录微信才能获取到微信好友的信息,本文采用wxpy该第 ...

  9. 基于python的微信好友数据分析_python 微信好友特征数据分析及可视化

    #微信好友特征数据分析及可视化 # 1.导包操作 from wxpy import * import re import jieba import numpy as np from scipy.mis ...

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

    写在前面: 之前了解过一点python,前两天看了一篇文章,一件有趣的事:我用 Python 爬了爬自己的微信朋友,感觉还挺有意思的,不过文章看完了,自己敲代码的时候还是有点坑踩进去的,所以我写篇文章 ...

最新文章

  1. php中 可替代curl,laravel-PHP-为什么使用Guzzle代替cURL?
  2. html溢出宽度控制,html - 具有固定宽度列的HTML / CSS表(如果内容溢出,则滚动) - 堆栈内存溢出...
  3. Android开发面试题之Android四大组件
  4. Abstract 的使用
  5. 1.6解不等式 1.6.1 平方根不等式
  6. 同步带轮介绍_Synchroflex丨红色GENIII同步带丨Mulco
  7. 【学术分享】发顶会论文,怎么就那么难?
  8. LAMP架构调优(七)——Apache Prefork模式调优
  9. shell脚本的逻辑判断
  10. 深度相机原理揭秘--双目立体视觉
  11. Android实现IOS轮效果(Android Studio)
  12. 物联网带动传感器站上风口 华灿光电并购美新半导体
  13. 全场景效能平台猪齿鱼 Agent——helm组件升级
  14. Android Fragment 真正的完全解析
  15. iOS Bilibili/ijkplayer 集成与使用
  16. 看完这些治愈的VR全景风景,相信你一定会心驰神往
  17. CUDA学习资源整合
  18. 宜人贷 PaaS 数据服务平台Genie 简介(一) 1
  19. 意淫系列-2018美图春招笔试题
  20. 不完美的英雄也是英雄

热门文章

  1. vs解决方案和项目工程
  2. 乱序整数序列两数之和绝对值最小
  3. 工行网银网上支付 提示选择证书,但下拉框是空白,无法选择导致不能支付 解决办法
  4. java 中文字体_java安装字体--在Swing设置中文字体(微软雅黑)
  5. 百度文库上传总是被私有,如何正确上传百度文库
  6. ConcurrentHashMap的put方法
  7. Reincarnation HDU - 4622 (后缀自动机)
  8. PDF 转 Word - 免费在线 pdf 转换成 word 文档
  9. MySQL 性能优化的 9 种知识,面试再也不怕了
  10. 计算机硬盘没内存怎么办,电脑内存不够用怎么办