结合几个常用的Python数据分析包,结合itchat分析朋友圈的能力。从何入手微信现在越来越融入我们每个人的生活,从简单的聊天工具到衣食住行,再到传播丰富多彩信息的自媒体和无所不包的小程序,微信就像一个小小的生态系统。而人是整个微信生态的核心,每个人的朋友圈都是自己小生态的核心。itchat为我们提供了获取好友信息的接口:friends=itchat.get_friends(update=True)[0:]通过debug可以看到各个好友的信息:可以看到各个好友的信息还是很丰富的,从昵称、性别、地区等,好友列表按照通讯录排列,排在第一位的是用户本人,其次是明星好友,比如津津在我的列表中排在第一位。我们今天所有的工作将从朋友的信息开始。StatisticalFriendsGenderDistribution性别分布是最容易统计的数据。通过查看自己和几个朋友的资料,得到sex和gender的对应关系:sex=0:unknownsex=1:boysex=2:girlpyecharts是一个生成Echarts图表的类库,Echarts是百度开源的一个数据可视化JS库。主要用于数据可视化。使用pyecharts绘制好友性别分布:frompyechartsimportPieboy=girl=nothing=0foriinfriends[1:]:sex=i[Sex]ifsex==1:boy+=1elifsex==2:girl+=1else:nothing+=1total=len(friends[1:])attr=[粉妹,粉哥,低调的匿名粉]v1=[boy,girl,nothing]pie=Pie(fan性别分布,title_pos='center')pie.add(,attr,v1,radius=[40,75],label_text_color=None,is_label_show=True,is_legend_show=False)pie.show_config()pie.render(./sex_data.html)运行结果如下:我的微信就不止这么多粉丝了,真是吃鲸鱼,希望津津不要打我。好友地域分布分析完好友的性别,我们再分析一下好友的地域分布,看看我们的好友是不是遍布全球:value)returnvariableNickName=get_var(NickName)Sex=get_var(Sex)Province=get_var('Province')Signature=get_var('Signature')city=get_var('City')data{'NickName':NickName,'Sex':Sex,'Province':Province,'Signature':Signature,'city':city}frame=pd.DataFrame(data)result1=frame.groupby(['Province'],as_index=False).size()a1=list(result1)a2=result1.indexmap=Map(我的朋友占了大半个中国!,来自朋友圈,title_pos=center,width=1200,height=600)map.add(,a2,a1,maptype='china',is_visualmap=True,visual_text_color='#000',visual_range=[1,8],is_label_show=True,symbol=diamon,label_pos=inside)map.show_config()map.render(./area_data.HTML)***结果如下:非常准确,作为“wa北上沪杭漂流的“李白条”,除了老家在河南,朋友基本集中在上海、北京、杭州,想浪就去广州、深圳。朋友性格签名词云分析微信签名是了解一个人的性格和态度的重要参考。我想看看我朋友圈里的高手是不是都是文艺的,是小清新的,还是大学小霸王的。。。不多说了,试试看:jieba(结巴)厉害分词库,最好支持中文分词;wordcloud是一个基于Python的词云生成库,很好用;matplotlib.pyplot是一些命令行风格函数的集合,它使得matplotlib以类似于MATLAB的方式工作。每个pyplot函数都会对图形进行一些修改:比如新建一张图片,在图片中新建一个绘图区,在绘图区画一条直线,给图形添加标签等。:importreimportjiebaimportwordcloudaswcimportnumpyasnpimportPIL.ImageasImageimportmatplotlib.pyplotaspltsiglist=[]foriinfriends:signature=i['签名'].strip().replace(span,).replace(class,).replace(emoji,)rep=re.compile(1f\d+\w*|[/=])signature=rep.sub(,signature)siglist.append(signature)text=.join(siglist)wordlist=jieba.cut(text,cut_all=True)word_space_split=.join(wordlist)coloring=np.array(Image.open(./1.jpg))#一张猴子图片,试了很多照片,还是这个好my_wordcloud=wc.WordCloud(background_color=white,#背景色mask=coloring,max_words=200,#***wordsmax_font_size=60,#Font***valuerandom_state=42,scale=4,#按比例放大画布,如果设置为1.5,那么长宽都是原画布的1.5倍。font_path=./HYQiHei-25J.ttf,#字体,注意选择合适的字体,否则可能显示乱码。width=400,height=200#pixel).generate(word_space_split)image_colors=wc.ImageColorGenerator(着色)#plt.imshow(my_wordcloud.recolor(color_func=image_colors))plt.imshow(my_wordcloud)plt.axis(off)#坐标轴不显示plt.show()my_wordcloud.to_file('./test.jpg')***结果如下:对于词云的分布也有很多可以挖掘的信息.看来小伙伴们更偏向于文艺风。爱自己,爱生活,有梦想,拥抱世界。我还看到了右下角的低调帖子。后记微信是一个神奇的存在,它是全民通用的国民级APP,所以微信的??产品设计一直是一个有趣的现象,从最开始的底部标签页数,每个标签页的名称,到定制化发现页面,小程序入口、朋友圈入口、朋友圈评论等一系列设计细节,都值得我们通过人性和心理来研究。就连被人们供奉的张小龙,面对的也是中国最复杂的结构。说到用户群体,他的潇洒依旧充满了无奈。从忽略朋友圈就可以看出这是一个不会让人满意的功能。任何生态都面临着庞大的用户群体。有时候,功能的增减都会成为一个问题。
