Python数据 分析微信朋友圈
个人兴趣爱好,通过python对微信朋友圈进行了分析,主要对微信好友进行提取,对好友地区分布,签名等进行可视化
需要安装包如下:
pip3 install itchat
pip3 install pandas
pip3 install echarts-countries-pypkg
pip3 install echarts-china-provinces-pypkg
pip3 install echarts-china-cities-pypkg
pip3 install pyecharts
pip3 install jieba
pip3 install wordcloud
pip3 install numpy
获取微信圈好友信息
import itchat
# 按照key得到相关list
def get_attr(friends, key):return list(map(lambda user: user.get(key), friends))
def get_friends():itchat.auto_login(hotReload=True)friends = itchat.get_friends()users = dict(province=get_attr(friends, "Province"),city=get_attr(friends, "City"),nickname=get_attr(friends, "NickName"),sex=get_attr(friends, "Sex"),signature=get_attr(friends, "Signature"),remarkname=get_attr(friends, "RemarkName"),pyquanpin=get_attr(friends, "PYQuanPin"),displayname=get_attr(friends, "DisplayName"),isowner=get_attr(friends, "IsOwner"))return users
itchat.auto_login(hotReload=True)
登录微信圈好友,hotReload参数表示短时间
内不需要扫码可登陆(在项目下生成itchat.pkl文件),执行上述代码,弹出登录二维码,只需要拿出手机—>扫码登录即可。处理后数据为一个dict
数据分析
好友性别
先来看下朋友圈好友性别比例
import numpy
import pandas as pd
from pyecharts import Pie, Map, Style, Page, Bar
def sex_stats(users):df = pd.DataFrame(users)sex_arr = df.groupby(['sex'], as_index=True)['sex'].count()data = dict(zip(list(sex_arr.index), list(sex_arr)))data['不告诉你'] = data.pop(0)data['帅哥'] = data.pop(1)data['美女'] = data.pop(2)return data.keys(), data.values()
def create_charts():users = get_friends()
page = Page()style = Style(width=1100, height=600)style_middle = Style(width=900, height=500)data = sex_stats(users)attr, value = datachart = Pie('微信性别') # title_pos='center'chart.add('', attr, value, center=[50, 50],radius=[30, 70], is_label_show=True, legend_orient='horizontal', legend_pos='center',legend_top='bottom', is_area_show=True)page.add(chart)page.render()
pandas 为数据分析工具,类似数据库中的表。df.groupby(['sex'], as_index=True)['sex'].count() 按性别统计好友数,Pie为环形图类。一共好友190个,帅哥占比57.37,美女38.42,本人屌丝程序员一枚,所有帅哥比较多
省份分布
再来看看各省份好友分布情况
def prov_stats(users):prv = pd.DataFrame(users)prv_cnt = prv.groupby('province', as_index=True)['province'].count().sort_values()attr = list(map(lambda x: x if x != '' else '未知', list(prv_cnt.index)))return attr, list(prv_cnt) def create_charts():def create_charts():users = get_friends()data = prov_stats(users)attr, value = datachart = Map('中国地图', **style.init_style)chart.add('', attr, value, is_label_show=True, is_visualmap=True, visual_text_color='#000')page.add(chart)chart = Bar('柱状图', **style_middle.init_style)chart.add('', attr, value, is_stack=True, is_convert=True, label_pos='inside', is_legend_show=True,is_label_show=True)page.add(chart)page.render()
得到各省份好友分布图,主要集中在广东和湖北,工作生活一直在广东。广东好友112个,那么接下来看看广东省主要分布在哪些市
广东省分布
def gd_stats(users):df = pd.DataFrame(users)data = df.query('province == "广东"')res = data.groupby('city', as_index=True)['city'].count().sort_values()attr = list(map(lambda x: '%s市' % x if x != '' else '未知', list(res.index)))return attr, list(res)def create_charts():users = get_friends()data = gd_stats(users)attr, value = datachart = Map('广东', **style.init_style)chart.add('', attr, value, maptype='广东', is_label_show=True, is_visualmap=True, visual_text_color='#000')page.add(chart)chart = Bar('柱状图', **style_middle.init_style)chart.add('', attr, value, is_stack=True, is_convert=True, label_pos='inside', is_label_show=True)page.add(chart)page.render()
广东省主要分布在珠海、深圳、广州珠三角,因为笔者先后在深圳、珠海工作过
签名词云
先用jieba库对个性签名进行分词def jieba_cut(users):signature = users['signature']words = ''.join(signature)res_list = jieba.cut(words, cut_all=True)return res_list
再用WordCloud生成词云def create_wc(words_list):res_path = os.path.abspath('./resource')words = ' '.join(words_list)back_pic = numpy.array(Image.open("%s/china1.png" % res_path))stopwords = set(STOPWORDS)stopwords = stopwords.union(set(['class','span','emoji','emoji','emoji1f388','emoji1f604']))wc = WordCloud(background_color="white", margin=0,font_path='%s/hanyiqihei.ttf' % res_path,mask=back_pic,max_font_size=70,stopwords=stopwords).generate(words)# image_colors = ImageColorGenerator(back_pic)plt.imshow(wc)# plt.imshow(wc.recolor(color_func=image_colors))plt.axis('off')plt.show()
分析时发现有些无用词语['class','span','emoji','emoji','emoji1f388','emoji1f604']需要排除,加入停词set。笔者的背景图片和字体放在项目 './resource' 下,注意:font_path必须设置,否则生成为乱码,back_pic为背景图片形状
通过图片可以看到最大词汇为世界、自己、生活,说明朋友还是比较正能量
至此,对朋友圈好友进行了大概分析
源码地址:https://github.com/TreasureGitHub/weixin_fenxi
执行代码,用微信扫一扫吧,少年!
Python数据 分析微信朋友圈相关推荐
- python数据挖掘分析微信朋友圈(调用itchat库)
参考https://blog.csdn.net/qinyuanpei/article/details/79360703,基于python3.6实现微信朋友圈性别.地区.个性签名.头像四个维度的分析. ...
- 利用python深度分析微信朋友圈好友
最近看了wxpy这个包,感觉还不错,分析一下微信的好友. 分析的目的: 1.看看好友的性别占比.地域分布 2.分析好友的个性签名 3.对好友的签名进行情感分析 环境:python 3.6 需要的包wx ...
- 实战:大数据营销 微信朋友圈广告
朋友圈广告可以进行自助投放与服务商代理投放,微信广告的官网上也有比较详尽的介绍,在此就不赘述了.接下来我会就朋友圈广告的形式.定向和一些案例来具体地对一些投放问题进行讲解. 目前,朋友圈广告有5种广告 ...
- python抓取微信朋友圈动态_2018最全如何利用Python网络爬虫抓取微信朋友圈的动态...
今天小编给大家分享一下如何利用Python网络爬虫抓取微信朋友圈的动态信息,实际上如果单独的去爬取朋友圈的话,难度会非常大,因为微信没有提供向网易云音乐这样的API接口,所以很容易找不到门.不过不要慌 ...
- Python爬取微信朋友圈 ! 让屏蔽你的女神无处可躲 ?
接下来,我们将实现微信朋友圈的爬取. 如果直接用 Charles 或 mitmproxy 来监听微信朋友圈的接口数据,这是无法实现爬取的,因为数据都是被加密的.而 Appium 不同,Appium 作 ...
- python 爬取微信朋友圈的一些信息
一.工具:使用python 3.6 自带的编辑器IDEL,在命令行可以正常运行. 二.此程序用到的一些库和包: (1)itchat:itchat是一个开源的微信个人号接口,可以登录微信账号:点击打开链 ...
- python微信朋友圈刷图_10分钟用Python做个微信朋友圈抽奖九宫格
最近在朋友圈看到个好玩的抽奖九宫格: 随便点开一个: 哈哈,笑出猪叫!这个玩法利用了朋友圈发长图会显示中间局部的设定,搞笑之余也为朋友圈广告营销贡献了新思路. 制作图的过程也不复杂,长图对应部分设计好 ...
- 分析微信朋友圈王者荣耀battle记录
有朋友说看不懂,我做成表格. 统计每个时段battle次数.峰值在中午12点和晚上10点之后,凌晨也大有人在,我是正常人.顺手多分析了几张.你会知道谁有朋友,谁哪天休,谁平生不修善果,只爱杀人放火.谁 ...
- Python爬虫爬取微信朋友圈
更多编程教程请到:菜鸟教程 https://www.piaodoo.com/ 友情链接: 高州阳光论坛https://www.hnthzk.com/ 人人影视http://www.op-kg.com/ ...
最新文章
- 深度学习“三部曲”重磅资源、python、DL理论、工程实战全覆盖(附免费下载)...
- mac环境下安装Gradle及配置
- ElasticSearch 深入理解 三:集群部署设计
- 文巾解题 面试题 01.01. 判定字符是否唯一
- 为什么python这么火_Python为什么这么火?你了解多少呢?
- Mysql_mysql 性能分析及explain用法
- Android Studio(5)--创建 Android 库
- 获得Local IP Address (C++实现)
- c语言 关键字符,c语言关键字有哪些 c语言关键字解释
- 关于form提交后展示遮罩及显示进度条gif问题
- 240万!动漫人脸数据集AnimeCeleb
- 【无机纳米材料科研制图——OriginLab 0208】Origin拟合SERS拉曼光谱
- mysql 联合主键_mysql的联合主键与复合主键区别
- 揭示未来方向:2018中国TMT行业“领秀榜”盛典直击
- 2023年节假日数据放假补班数据json
- pr文字模板 12个独特设计全屏标题动画pr动态文字模板
- SpringCloud重试机制配置
- C++ 大作业 记账本
- python爬取猫眼top100电影,经典永远是经典
- flutter实现一个下拉菜单【基于PopupMenuButton】