人生最难的事是自我认知,用Python爬取朋友圈数据,让我们重新审视自己,审视我们周围的圈子。
文:朱元禄(@数据分析-jacky)
哲学的两大问题:1、我是谁?2、我们从哪里来?
本文 jacky试图用Python,数据化、聚类化我们的人格标签,试图回答"我是谁?"这个哲学问题。
(一)确定数据源
自我认知,很难,必须它证。
物以类聚,人以群分。每个人的社交圈,家庭圈,朋友圈的属性,基本我们人格的特征属性。我们所处的阶级,在别人眼中的印象,在我们的朋友圈中都会得到印证。
朋友圈数据中最具人格属性的因素是个性签名,那么下面我们就把所有好友的个性签名作为我们的研究对象,以此出发爬取数据。
(二) 使用Python的itchat 包对好友的个性签名数据进行分析
这里我们用到Python一个比较冷门的库——itchat,它很好的兼容了wechat个人账号的API接口,让我们能更加便捷的爬取wechat数据,itchat的功能很强大,这里我们仅用它爬取wechat中我们每个好友的个性签名。
之后,我们要分析出自定义词云图中个性签名使用的高频词语是什么。
最后,生成可视化词云图,直观的给出洞察结果。
源代码如下:
# coding:utf-8
import itchat
import re
itchat.login()
friends = itchat.get_friends(update=True)[0:]
tList = []
for i in friends:
signature = i["Signature"].replace(" ", "").replace("span", "").replace("class", "").replace("emoji", "")
rep = re.compile("1f\d.+")
signature = rep.sub("", signature)
tList.append(signature)
# 拼接字符串
text = "".join(tList)
# jieba分词
import jieba
wordlist_jieba = jieba.cut(text, cut_all=True)
wl_space_split = " ".join(wordlist_jieba)
# wordcloud词云
import matplotlib.pyplot as plt
from wordcloud import WordCloud, ImageColorGenerator
import os import numpy as np
import PIL.Image as Image
d= os.path.dirname(os.path.abspath( __file__ ))
alice_coloring = np.array(Image.open(os.path.join(d, "wechat.jpg")))
my_wordcloud = WordCloud(background_color="white", max_words=2000,mask=alice_coloring,max_font_size=400, random_state=420,font_path='/Users/sebastian/Library/Fonts/Arial Unicode.ttf').generate(wl_space_split)
image_colors = ImageColorGenerator(alice_coloring)
plt.imshow(my_wordcloud.recolor(color_func=image_colors))
plt.imshow(my_wordcloud)
plt.axis("off")
plt.show()
下面对于代码的解析,仅跟初学 Python的朋友提示三点:
1)代码第24行,其他网络版本的代码为d= os.path.dirname(__file__),最好换成jacky这个版本的:
d=os.path.dirname(os.path.abspath(__file__)),具体原因jacky就不做过多解释了;
2)代码第25行,一定要提前在环境路径下创建wechat.jpg的图片,这样云图才能顺利生成,并生成你希望的形状。
3)提前在终端安装jieba,matplotlib,wordcloud,numpy包
注意以上三点,想不运行成功都难。
运行上面的代码,得到下面的云图:
(三)数据洞察
以jacky的朋友圈为例,在云图中,我们可以看见,高频词有:自己,创始人,电商,成功,努力,营销,互联网,数据,梦想,生活,咨询,我们,未来。
其实,这些词jacky还可以继续用机器学习算法搞一下,但到这就浅尝则止吧。
从这些具体的信息中,可以抽象出我的个人人格标签,具体解析:
自己,我们:说明我很自我,很自大,很自以为是;
努力,未来,梦想:说明我想通过努力来实现自己的价值;
创始人:说明我的社交圈还OK;
互联网,数据:说明我的能力属性;
营销,咨询:说明了我赖以生存的饭碗;
代理:这... ... 不好说了... ...
End
转载请注明出处