基于python分析微信好友的性别分布,区域分布,词云分析,头像拼接

最后

Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

👉Python所有方向的学习路线👈

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

👉Python必备开发工具👈

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

👉Python全套学习视频👈

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

👉实战案例👈

学python就与学数学一样,是不能只看书不做题的,直接看步骤和答案会让人误以为自己全都掌握了,但是碰到生题的时候还是会一筹莫展。

因此在学习python的过程中一定要记得多动手写代码,教程只需要看一两遍即可。

👉大厂面试真题👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

basePath = os.path.abspath(‘.’)

baseFolder = basePath + ‘\HeadImages\’

if(os.path.exists(baseFolder) == False):

os.makedirs(baseFolder)

Analyse Images

faceApi = FaceAPI()

use_face = 0

not_use_face = 0

image_tags = ‘’

for index in range(1,len(friends)):

friend = friends[index]

Save HeadImages

imgFile = baseFolder + ‘\Image%s.jpg’ % str(index)

imgData = itchat.get_head_img(userName = friend[‘UserName’])

if(os.path.exists(imgFile) == False):

with open(imgFile,‘wb’) as file:

file.write(imgData)

Detect Faces

time.sleep(1)

result = faceApi.detectFace(imgFile)

if result == True:

use_face += 1

else:

not_use_face += 1

Extract Tags

result = faceApi.extractTags(imgFile)

image_tags += ‘,’.join(list(map(lambda x:x[‘tag_name’],result)))

labels = [u’使用人脸头像’,u’不使用人脸头像’]

counts = [use_face,not_use_face]

colors = [‘red’,‘yellowgreen’,‘lightskyblue’]

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 right’,)

plt.title(u’%s的微信好友使用人脸头像情况’ % friends[0][‘NickName’])

plt.show()

image_tags = image_tags.encode(‘iso8859-1’).decode(‘utf-8’)

back_coloring = np.array(Image.open(‘face.jpg’))

wordcloud = WordCloud(

font_path=‘simfang.ttf’,

background_color=“white”,

max_words=1200,

mask=back_coloring,

max_font_size=75,

random_state=45,

width=800,

height=480,

margin=15

)

wordcloud.generate(image_tags)

plt.imshow(wordcloud)

plt.axis(“off”)

plt.show()

3.微信好友签名分析

==========

分析好签名,签名是好友信息中最为丰富的文本信息,按照人类惯用的”贴标签”的方法论,签名可以分析出某一个人在某一段时间里状态,就像人开心了会笑、哀伤了会哭,哭和笑两种标签,分别表明了人开心和哀伤的状态。这里我们对签名做两种处理,第一种是使用用结巴分词进行分词后生成词云,目的是了解好友签名中的关键字有哪些,哪一个关键字出现的频率相对较高;第二种是使用SnowNLP分析好友签名中的感情倾向,即好友签名整体上是表现为正面的、负面的还是中立的,各自的比重是多少。这里提取Signature字段即可

image

image

通过词云,我们可以发现:在微信好友的签名信息中,出现频率相对较高的关键词有:人生,生命,努力、前行,战略,坚强,美丽。果然我的微信好友都是温暖、正直的好青年啊! 其实,签名这个设定,从某种程度上是在反映人的一种心态,人在年轻时不免”为赋新词强说愁”,等到你真正到了这个精神境界,突然发现年轻时图样图森破,或许这就是我们不愿意让别人了解过去的原因,因为伴随着人的成长,某一种瞬间的状态简直不忍直视,QQ空间陪伴了我们这代人的整个青春,令人印象深刻的”那年今日”功能,有时让我们感到回忆的温暖,有时让我们感到岁月的萧杀,”当时只道是寻常”的物是人非,”回首向来萧瑟处”的淡定从容,”今夕复何夕”的失落惆怅……都在这一行行签名里留下深深浅浅的印记。在知乎上有关于签名的话题讨论,对此感兴趣的朋友不妨找时间看看。:

image

image

通过柱状图,我们可以发现:在微信好友的签名信息中,正面积极的情感判断约占到55.56%,中立的情感判断约占到32.10%,负面消极的情感判断约占到12.35%。这个结果和我们通过词云展示的结果基本吻合,这说明在微信好友的签名信息中,约有87.66%的签名信息,传达出来都是一种积极向上的态度。朋友圈中基本上有两类用户,第一类用户使用朋友圈记录自己的生活,第二类用户使用朋友圈输出自己的观点。显然,对于第二类用户,它并不介意别人了解它的过去,它更在乎它从始至终输出的观点是否一致。所以,不管朋友圈里别人在或晒美食、或晒旅游、或秀恩爱、或晒宝宝、或煲鸡汤等等,在我看来这都是一种生活方式,精神层次和物质层次比你高的人群,觉得你朋友圈里的内容”无趣”,这是符合人类一贯的认知方式的,在大多数情况下,反而是那些和你层次差不多的人群,对不熟悉的人或者事物妄加判断,如果你不喜欢我朋友圈里的内容,请直接屏蔽我就好,因为这样我们还可以做朋友;如果你因为喜欢A而在我这里和我说B不好,这就真的是三观不合啦。我相信没有完全兴趣匹配的两个人,即使是男女朋友或者情侣之间,总之人与人相处嘛,真诚和互相尊重是基本要求。

代码附上:

def analyseSignature(friends):

signatures = ‘’

emotions = []

pattern = re.compile(“1f\d.+”)

for 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):

nlp = SnowNLP(signature)

emotions.append(nlp.sentiments)

signatures += ’ '.join(jieba.analyse.extract_tags(signature,5))

with open(‘signatures.txt’,‘wt’,encoding=‘utf-8’) as file:

file.write(signatures)

Sinature WordCloud

back_coloring = np.array(Image.open(‘flower.jpg’))

wordcloud = WordCloud(

font_path=‘simfang.ttf’,

background_color=“white”,

max_words=1200,

mask=back_coloring,

max_font_size=75,

random_state=45,

width=960,

height=720,

margin=15

)

wordcloud.generate(signatures)

plt.imshow(wordcloud)

plt.axis(“off”)

plt.show()

wordcloud.to_file(‘signatures.jpg’)

Signature Emotional Judgment

count_good = len(list(filter(lambda x:x>0.66,emotions)))

count_normal = len(list(filter(lambda x:x>=0.33 and x<=0.66,emotions)))

count_bad = len(list(filter(lambda x:x<0.33,emotions)))

labels = [u’负面消极’,u’中性’,u’正面积极’]

values = (count_bad,count_normal,count_good)

plt.rcParams[‘font.sans-serif’] = [‘simHei’]

plt.rcParams[‘axes.unicode_minus’] = False

plt.xlabel(u’情感判断’)

plt.ylabel(u’频数’)

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.show()

4.微信好友分布

========

分析好友位置,主要通过提取Province和City这两个字段。本来想用pyecharts来实现,但是由于最近政策原因不能导出地图,参照网上的一些意见发现BDP在线制图非常好用,0编程门槛,拖拽使用,一键下载,所以首先将数据存储在csv上传到这个在线制图网站。

微信好友全国分布图

微信好友全国分布图

微信好友省份分布图

微信好友省份分布图

上图是BDP中生成的微信好友地理分布图,可以发现:我的微信好友主要集中在北上广深啊哈哈,可以小见大中国的互联网分布主要还是在这些一线沿海地区,找工作在这些区域也会更加便利

def analyseLocation(friends):

headers = [‘NickName’,‘Province’,‘City’]

with open(‘location.csv’,‘w’,encoding=‘utf-8’,newline=‘’,) as csvFile:

writer = csv.DictWriter(csvFile, headers)

writer.writeheader()

for friend in friends[1:]:

row = {}

row[‘NickName’] = friend[‘NickName’]

row[‘Province’] = friend[‘Province’]

row[‘City’] = friend[‘City’]

writer.writerow(row)

5. 微信好友全家福

===========

通过下载好友头像进行拼接,做成一张好友头像全家福,快来看一看有没有你呀! (ps:不知道这个有没有侵犯你的隐私,如果觉得有冒犯来跟我说一下哦,我来删除或打码)

微信好友全家福

微信好友全家福

import itchat

import math

import os

import PIL.Image as Image

开启热登录,短时间内退出,再次进入可以不用扫码登录

itchat.auto_login(hotReload=False)

friends = itchat.get_friends(update=True)

下载所有好友的头像图片

num = 0

imgPath = ‘./headImg/’

if not os.path.exists(imgPath):

os.mkdir(imgPath)

for i in friends:

img = itchat.get_head_img(i[“UserName”])

with open(imgPath + str(num) + “.jpg”, ‘wb’) as f:

f.write(img)

f.close()

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

四、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

五、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 10
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值