朋友圈分析

一直就认为python很酷,所以就看到网友使用python来分析一个朋友圈所以博主也就来学习一下下

说明

如果需要没有的包,通常可以在命令窗口下pip install 包名下载

重点奥!!!

此次学习过程中代码中要了解的甚多具体如下
1:python之lambda表达式了解
2:itchat了解_01
3:itchat了解_02
4:pandas.DataFrame
5:zip()函数
6:pop()
7:pyecharts的使用
8:python调用echart交互式可视化
9:绘图
10:Python中安装腾讯优图(TencentYoutuyun)获取
11:snownlp和jieba对比
12:使用Python的SnowNLP模块实现情感分析
13: 迭代器(Iterator)和生成器(Generate)
14:python bar函数
15:Python解决使用 plt.savefig 保存图片时一片空白
16:wordcloud的基本使用
以上16个链接大体是博主在了解代码的过程中遇到的不懂或者不明确!!!


好嘛开始进入代码人生,了解其产生的美妙的结果奥!!!

01 微信个性签名分析

1:代码

# coding=utf-8
"""
@author: jiajiknag
程序功能: 微信个性签名分析
"""
# 导包
# itchat实现微信个人号接口,itchat是一个开源的微信个人号接口。
import itchat
import numpy as np
import os
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']#绘图时可以显示中文
plt.rcParams['axes.unicode_minus']=False#绘图时可以显示中文
# 词云
from wordcloud import WordCloud,STOPWORDS,ImageColorGenerator
# PTL图像处理的库
from PIL import Image
import time
# 正则表达式库
import re
# 文本分析库
import snownlp
# 结巴分词
import jieba
import jieba.analysedef fun_analyse_Signature(friends):# 个性签名分析signatures = ''# 定义一个空列表emotions = []# 遍历freindsfor 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:# SnowNLP是一个python写的类库,可以方便的处理中文文本内容:这里就是处理个性签名nlp = snownlp.SnowNLP(signature)# 添加权值emotions.append(nlp.sentiments)#nlp.sentiments:权值# 关键字提取signatures += " ".join(jieba.analyse.extract_tags(signature,5))back_coloring = np.array(Image.open("jjk.jpg"))#图片可替换# 设置词云样式word_cloud2 = WordCloud(font_path = 'simkai.ttf',# 为中文设置的字体background_color = 'white',# 设置背景颜色max_words = 1200,# 设置最大实现的字数mask = back_coloring,# 设置背景颜色margin = 15)# 生成器generate()执行signaturesword_cloud2.generate(signatures)# 开始加载文本# 改变字体颜色image_colors = ImageColorGenerator(back_coloring)# 创建图plt.figure(figsize=(8,5),dpi=160)# 显示词云图plt.imshow(word_cloud2.recolor(color_func=image_colors))# 是否显示x轴、y轴下标plt.axis("off")plt.show()# 保存word_cloud2.to_file("signatures.jpg")print("个性签名生成词云成功")# lambda表达式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# X轴plt.xlabel("情感判断")# y轴plt.ylabel("频数")# 设置x轴的值域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.savefig("情感分析柱状图.jpg")plt.show()print("情感分析柱状图分析完成!!!")if __name__=="__main__":# 在登陆的时候使用命令行显示二维码,也就是运行程序会生成一个微信二维码奥# 且即使程序关闭,一定时间内重新开启也可以不用重新扫码。itchat.auto_login(hotReload=True)# 好友搜索friends = itchat.get_friends(update=True)# 调用函数fun_analyse_Signature(friends)

2:结果


02 微信好友性别分析

1:代码

# coding=utf-8
"""
@author: jiajiknag
程序功能: 性别分析
"""
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#绘图时可以显示中文
import TencentYoutuyun
from wordcloud import WordCloud,STOPWORDS,ImageColorGenerator
from PIL import Image
import time
import re
import snownlp
import jieba
import jieba.analyse
import pandas as pddef 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=(8,5), 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()
print("性别分析完成!!!")if __name__=="__main__":# 在登陆的时候使用命令行显示二维码,也就是运行程序会生成一个微信二维码奥# 且即使程序关闭,一定时间内重新开启也可以不用重新扫码。itchat.auto_login(hotReload=True)# 好友搜索friends = itchat.get_friends(update=True)# 调用函数fun_analyse_sex(friends)

2:结果

03 杂记(好友分布,性别比例,具体城市分布)

1:代码

# coding=utf-8
"""
@author: jiajiknag
程序功能:   Python分析微信朋友圈脚本
"""
# 导包
# itchat实现微信个人号接口,itchat是一个开源的微信个人号接口。
import itchat
# pandas是进行数据分析
import pandas as pd
# 从pyecharts包到导入Pie, Map, Style, Page, Bar函数,而pyecharts是绘制数据地图的。
# Pie(饼图),Map(地图) ,Bar(柱状图/条形图),Page类(同一网页按顺序展示多图)
from pyecharts import Pie, Map, Style, Page, Bar
import snownlp
import re
import jieba
import jieba.analyse
from wordcloud import WordCloud,STOPWORDS,ImageColorGenerator
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt# 01
# 根据key值得到对应的信息
def get_key_info(friends_info, key):# map()返回的是一个列表# lambda是一个表达式,简单的来说friend_info赋值,friend_info.get(key)执行,friends_info显示结果。具体参考:return list(map(lambda friend_info: friend_info.get(key), friends_info))# 02
# 获得所需的微信好友信息
def get_friends_info():# 在登陆的时候使用命令行显示二维码,也就是运行程序会生成一个微信二维码奥# 且即使程序关闭,一定时间内重新开启也可以不用重新扫码。itchat.auto_login(hotReload=True)# 好友搜索friends = itchat.get_friends()# 字典# 字典中然后调用函数get_key_info()获取相应信息friends_info = dict(# 省份province = get_key_info(friends, "Province"),# 城市city = get_key_info(friends, "City"),# 昵称nickname = get_key_info(friends, "Nickname"),# 性别sex = get_key_info(friends, "Sex"),# 签名signature = get_key_info(friends, "Signature"),# 备注remarkname = get_key_info(friends, "RemarkName"),# 用户名拼音全拼pyquanpin = get_key_info(friends, "PYQuanPin"))# 以变量friend_info返回字典获取的值。return friends_info# 03
# 性别分析
def analysisSex():#调用函数get_friens_info()--03friends_info = get_friends_info()# 二维大小可变,具有标记轴(行和列)的潜在异构表格数据结构。算术运算在行和列标签上对齐。# 可以认为是Series对象的一个​​类似字典的容器。主要熊猫数据结构。df = pd.DataFrame(friends_info)# groupby([by,axis,level,as_index,sort,...])# 使用映射器的组系列(dict或key函数,将给定函数应用于组,将结果作为系列返回)或由一系列列组成。# count()用于统计某个字符出现的次数sex_count = df.groupby(['sex'], as_index=True)['sex'].count()# 一个zip对象,其内部元素为元组;可以转化为列表或元组;# list(sex_count.index), list(sex_count))分别对应的行和列temp = dict(zip(list(sex_count.index), list(sex_count)))# 创建一个空字典data = {}# 给字典data添加数据# pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。data['保密'] = temp.pop(0)data['男'] = temp.pop(1)data['女'] = temp.pop(2)# 画图# Page:同一网页按顺序展示多图page = Page()attr, value = data.keys(), data.values()chart = Pie('Jjk微信好友性别比')chart.add('', attr, value, center=[50, 50],redius=[30, 70], is_label_show=True, legend_orient='horizontal', legend_pos='center',legend_top='bottom', is_area_show=True)# 添加图表page.add(chart)# 使用render()渲染生成html文件page.render('性别分析.html')# 04
# 省份分析
def analysisProvince():# 调用函数get_friens_info() - -03friends_info = get_friends_info()# 二维大小可变,具有标记轴(行和列)的潜在异构表格数据结构。算术运算在行和列标签上对齐。# 可以认为是Series对象的一个​​类似字典的容器。主要熊猫数据结构。df = pd.DataFrame(friends_info)# groupby([by,axis,level,as_index,sort,...])# 使用映射器的组系列(dict或key函数,将给定函数应用于组,将结果作为系列返回)或由一系列列组成。# count()用于统计某个字符出现的次数# sort_values()按任一轴的值排序province_count = df.groupby('province', as_index=True)['province'].count().sort_values()temp = list(map(lambda x: x if x != '' else '未知', list(province_count.index)))# 画图page = Page()# 设置宽度和高度style = Style(width=1100, height=600)style_middle = Style(width=600, height=500)attr, value = temp, list(province_count)chart1 = Map('Jjk好友分布(中国地图)', title_pos="center",width=1000,height=500)chart1.add('', attr, value, is_label_show=True, is_visualmap=True, visual_text_color='#000',visual_range=[0,120])page.add(chart1)chart2 = Bar('Jjk好友分布柱状图', **style_middle.init_style)chart2.add('', attr, value, is_stack=True, is_convert=True,label_pos='inside', is_legend_show=True, is_label_show=True)page.add(chart2)page.render('省份分析.html')# 05
# 具体省份(城市)分析
def analysisCity(province):friends_info = get_friends_info()df = pd.DataFrame(friends_info)temp1 = df.query('province == "%s"' % province)city_count = temp1.groupby('city', as_index=True)['city'].count().sort_values()attr = list(map(lambda x: '%s市' % x if x != '' else '未知', list(city_count.index)))value = list(city_count)# 画图# 图形的宽度和高度page = Page()style = Style(width=1000, height=600)style_middle = Style(width=700, height=500)# 调用Map()函数chart1 = Map('%s好友分布' % province, **style.init_style)chart1.add('', attr, value, maptype='%s' % province, is_label_show=True,is_visualmap=True, visual_text_color='#000')# 添加好友分布图表chart1page.add(chart1)chart2 = Bar('%s好友分布柱状图' % province, **style_middle.init_style)chart2.add('', attr, value, is_stack=True, is_convert=True, label_pos='inside', is_label_show=True)page.add(chart2)page.render('具体省份(城市)分析.html')# 06
# 好友签名分析if __name__ == '__main__':"""调用函数执行代码"""# 性别分析函数analysisSex()# 省份分析函数analysisProvince()# 具体城市分析analysisCity("甘肃")# 好友个性签名

2:结果

【python】微信朋友圈分析相关推荐

  1. python微信朋友圈刷图_用python中的itchat可视化微信朋友圈

    itchat是python与微信网页版连接的api,作为测试,博主利用itchat爬取了自己的微信并进行可视化 首先登录微信,定义函数用来储存好友信息 import itchat import mat ...

  2. python微信朋友圈刷图_10分钟用Python做个微信朋友圈抽奖九宫格

    最近在朋友圈看到个好玩的抽奖九宫格: 随便点开一个: 哈哈,笑出猪叫!这个玩法利用了朋友圈发长图会显示中间局部的设定,搞笑之余也为朋友圈广告营销贡献了新思路. 制作图的过程也不复杂,长图对应部分设计好 ...

  3. python微信朋友圈分享功能_利用Python让你的微信朋友圈与众不同,更加高大上

    前言 对于发朋友圈,我想很多人都有一种"执念",那就是一定要集齐九张图,没有九张图的朋友圈是没有灵魂的!!! 为了集齐九张图也是煞费苦心,我会告诉你,用Python轻松制作九张图嘛 ...

  4. 微信朋友圈python广告评论_【Python】我的微信朋友圈分析

    import itchat import re from echarts import Echart, Legend, Pie def friend_date(): # 登录 itchat.login ...

  5. Python数据 分析微信朋友圈

    个人兴趣爱好,通过python对微信朋友圈进行了分析,主要对微信好友进行提取,对好友地区分布,签名等进行可视化 需要安装包如下: pip3 install itchat pip3 install pa ...

  6. python数据挖掘分析微信朋友圈(调用itchat库)

    参考https://blog.csdn.net/qinyuanpei/article/details/79360703,基于python3.6实现微信朋友圈性别.地区.个性签名.头像四个维度的分析. ...

  7. python获取登录按钮_python爬虫24 | 搞事情了,用 Appium 爬取你的微信朋友圈。

    昨天小帅b看到一些事情不顺眼 有人偷换概念 忍不住就写了一篇反讽 996 的 看不下去了,我支持996,年轻人就该996! 没想到有些人看不懂 这就算了 还来骂我 早些时候关注我的小伙伴应该知道我第一 ...

  8. python爬虫微信朋友圈怎么发文字_如何利用Python网络爬虫抓取微信朋友圈的动态(上)...

    今天小编给大家分享一下如何利用Python网络爬虫抓取微信朋友圈的动态信息,实际上如果单独的去爬取朋友圈的话,难度会非常大,因为微信没有提供向网易云音乐这样的API接口,所以很容易找不到门.不过不要慌 ...

  9. 微信朋友圈投票活动的“刷票”案例分析。

    https://github.com/debugtalk/VoteRobot 现阶段,在微信朋友圈举办的投票活动层出不穷,相信已经有不少同学对此不胜其烦,因为总会时不时地冒出个人(亲戚.朋友.or w ...

  10. python爬微信朋友圈关键词_爬取朋友圈,Get年度关键词

    人生苦短,我用Python && C#. 1.引言 最近初学Python,写爬虫上瘾.爬了豆瓣练手,又爬了公司的论坛生成词云分析年度关键词.最近琢磨着2017又仅剩两月了,我的年度关键 ...

最新文章

  1. SAP零售:补货 Vs 多步骤补货
  2. java 中的几种 通用方法“
  3. 文本处理三剑客之sed
  4. OpenGL键盘消息实例
  5. odbc驱动程序管理器连接未打开_Windows 10 怎么修复 Windows 中的 Wi-Fi 连接问题,我教你...
  6. 三维空间刚体运动5:详解SLAM中显示机器人运动轨迹及相机位姿(原理流程)
  7. nginx发布PHP代码,nginx服务器配置返回php代码
  8. 关于Fragment 不响应onActivityResult的情况分析
  9. 复杂网络理论及其应用-基本概念
  10. 百度的71个非常厉害的开源项目
  11. 高级语言c 与三菱plc通讯宝典,三菱PLCL系列串行通信模块用户手册基本篇中文高清版...
  12. 介绍一种超大文件高速传输解决方案
  13. 谁在管理拼多多:超级大脑和原子化组织
  14. 3.giant component(netlogo)
  15. 【C语言】打印二叉树树形(制表符实现,清晰+高拓展)(2022-10-22 更新—偏移量说明)
  16. 《绮梦朦胧,一眼浮生醉流年》
  17. maven修改为阿里巴巴的仓库地址
  18. 2023中国矿业大学计算机考研信息汇总
  19. 计算机图形学——二维图形几何转换
  20. 2010年第五届站长大会现场视频直播

热门文章

  1. Android 开 发 资 源 分 享
  2. 码农小汪-Hibernate学习6-hibernate中Annocation修饰属性
  3. linux-postgresql客户端操作实例
  4. Adobe Premiere(pr)2021 安装教程【64位】
  5. 怎么安装服务器打印组件,Windows Server2012 配置打印服务器图文教程
  6. Dosbox安装Windows 95图文教学
  7. 1230v3配服务器内存性能提升,E3 1230 V3四核3.7G睿频福利教程及评测
  8. IMDB Top500(世界最佳电影500部)
  9. 用 Dev-C++ 编写简单的平均数/中位数/众数/方差/一元线性回归方程计算器(附带控制台颜色设置,选择界面)
  10. 浏览器指纹?(防关联浏览器/指纹浏览器/超级浏览器/候鸟浏览器)