利用python深度分析微信朋友圈好友

最近看了wxpy這個(gè)包沛膳,感覺(jué)還不錯(cuò),分析一下微信的好友。

分析的目的:

1.看看好友的性別占比、地域分布

2.分析好友的個(gè)性簽名

3.對(duì)好友的簽名進(jìn)行情感分析

環(huán)境:python 3.6

需要的包wxpy耘拇、jieba、snownlp宇攻、scipy惫叛、wordcloud(這個(gè)pip可能直接安裝不了,會(huì)提示需要c++之類(lèi)的錯(cuò)誤逞刷,直接去官網(wǎng)下載whl文件嘉涌,用pip離線安裝就好了,命令:pip install D:/xxxx/xxxx/xxx.whl把xxx換成你的文件路徑)

過(guò)程如下:

先導(dǎo)入需要的所有包夸浅。利用wxpy的bot()接口仑最,可以獲得好友、公眾號(hào)帆喇、群聊等屬性警医,可以完成大部分web端微信的操作,比如自己跟自己聊天坯钦,添加好友等预皇。


from wxpy import *

from snownlp import SnowNLP,sentiment

import re,jieba

from scipy.misc import imread

from wordcloud import WordCloud, ImageColorGenerator,STOPWORDS

import matplotlib.pyplot as plt

from collections import Counter

bot=Bot()

friends=bot.friends()#獲得好友對(duì)象

groups=bot.groups()#獲得群聊對(duì)象

mps=bot.mps()#獲得微信公眾號(hào)

print(mps)

#計(jì)算男女性別,畫(huà)出餅圖

sex_dict={'boy':0,'girl':0,'other':0}

for friend in friends:

    if friend.sex==1:

        sex_dict['boy']+=1

    elif friend.sex==2:

        sex_dict['girl']+=1

    else:

        sex_dict['other']+=1

print('有男生{}個(gè),女生{}個(gè),未知性別{}個(gè)'.format(sex_dict['boy'],sex_dict['girl'],sex_dict['other']))

labels = ['boy','girl','other']

colors = ['red','yellow','green']

explode = (0.1, 0, 0)  #最大的突出顯示

plt.figure(figsize=(8,5), dpi=80)

plt.axes(aspect=1)

plt.pie(sex_dict.values(),explode=explode,labels=labels, autopct='%1.2f%%',colors=colors,labeldistance = 1.1, shadow = True, startangle = 90, pctdistance = 0.6)

plt.title("SEX ANALYSIS",bbox=dict(facecolor='g', edgecolor='blue', alpha=0.65 ))#設(shè)置標(biāo)題和標(biāo)題邊框

plt.savefig("sex_analysis.jpg")

plt.show()

運(yùn)行過(guò)程中婉刀,會(huì)彈出二維碼吟温,微信掃描登錄一下就可以看到下面的圖片了。

image

我的好友男女平均分配突颊,不知道其他人的怎么樣鲁豪。

接下來(lái)看好友的地域分布


city=[]

Municipality=['上海','上海市','北京','北京市','重慶','重慶市','天津','天津市']

for friend in friends:

    if friend.province  in Municipality:

        city.append(friend.province)#直轄市直接添加城市

    else:

        city.append(friend.city)

#print(city.count('上海'))

counts=dict(Counter(city))#統(tǒng)計(jì)各個(gè)地區(qū)人數(shù)

print(counts)

df=pd.DataFrame([counts]).T#轉(zhuǎn)成DataFrame方便保存和后面畫(huà)圖,裝置成豎排形式

看地理圖,就要請(qǐng)出大名鼎鼎的tableau洋丐,一鍵生成呈昔,用matplotlib也可以畫(huà)地理圖,比較麻煩一些而已友绝。

image

地理圖可以很清晰看到好友分布地域和數(shù)量堤尾。

接下來(lái)進(jìn)行好友簽名分析和情感分析

text1=[]

emotions=[]

for friend in friends:

    sig=friend.signature.strip()

    newsig=re.sub(re.compile('<.*?>|[0-9]|。|迁客,|郭宝!|~|—|”|“|《|》|\?|掷漱、|:'), '', sig)#去掉數(shù)字標(biāo)點(diǎn)符號(hào)

    text1.append(newsig)

    if len(newsig)>0:

        sentiments = SnowNLP(newsig).sentiments

        emotions.append(sentiments)

text = "".join(text1)

wordlist=" ".join(jieba.cut(text,cut_all=True))#結(jié)巴分詞粘室,用空格連接

stopwords = STOPWORDS#設(shè)置停用詞

bgimg=imread(r'C:\Users\lbship\Desktop\mice.jpg')#設(shè)置背景圖片

font_path=r'C:\Windows\Fonts\simkai.ttf'

wc = WordCloud(font_path=font_path,  # 設(shè)置字體

              background_color="white",  # 背景顏色

              max_words=2000,  # 詞云顯示的最大詞數(shù)

              stopwords = stopwords,        # 設(shè)置停用詞

              mask=bgimg,  # 設(shè)置背景圖片

              max_font_size=100,  # 字體最大值

              random_state=42,#設(shè)置有多少種隨機(jī)生成狀態(tài),即有多少種配色

              width=1000, height=860, margin=2,# 設(shè)置圖片默認(rèn)的大小,margin為詞語(yǔ)邊緣距離

              ).generate(wordlist)

image_colors = ImageColorGenerator(bgimg)#根據(jù)圖片生成詞云顏色

plt.imshow(wc)

plt.axis("off")#不顯示坐標(biāo)尺寸

plt.savefig("sig.jpg")

plt.show()

#情感分析

positive=len(list(i for i in emotions if i>0.66))

normal=len(list(i for i in emotions if i<=0.66 and i>=0.33))

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

negative=len(list(i for i in emotions if i<0.33))

labels = ['POSITIVE','NORMAL','NEGATIVE']

values = (positive,normal,negative)

plt.rcParams['font.sans-serif'] = ['simHei']

plt.rcParams['axes.unicode_minus'] = False

plt.title("SENTIMENTS ANALYSIS",fontsize='large',fontweight='bold',bbox=dict(facecolor='blue', edgecolor='yellow', alpha=0.5 ))

plt.xlabel('sentiments analysis')

plt.ylabel('counts')

plt.xticks(range(3),labels)

plt.bar(range(3), values, color = 'rgb')

plt.savefig("sentiment.jpg")

plt.show()
image
image

朋友圈還是積極向上的朋友比較多卜范。

下面是完整代碼


from wxpy import *

from snownlp import SnowNLP,sentiment

import re,jieba

import pandas as pd

from scipy.misc import imread

from wordcloud import WordCloud, ImageColorGenerator,STOPWORDS

import matplotlib.pyplot as plt

from collections import Counter

bot=Bot()

friends=bot.friends()#獲得好友對(duì)象

groups=bot.groups()#獲得群聊對(duì)象

mps=bot.mps()#獲得微信公眾號(hào)

print(mps)

#計(jì)算男女性別,畫(huà)出餅圖

sex_dict={'boy':0,'girl':0,'other':0}

for friend in friends:

    if friend.sex==1:

        sex_dict['boy']+=1

    elif friend.sex==2:

        sex_dict['girl']+=1

    else:

        sex_dict['other']+=1

print('有男生{}個(gè)衔统,女生{}個(gè),未知性別{}個(gè)'.format(sex_dict['boy'],sex_dict['girl'],sex_dict['other']))

labels = ['boy','girl','other']

colors = ['red','yellow','green']

explode = (0.1, 0, 0)  #最大的突出顯示

plt.figure(figsize=(8,5), dpi=80)

plt.axes(aspect=1)

plt.pie(sex_dict.values(),explode=explode,labels=labels, autopct='%1.2f%%',colors=colors,labeldistance = 1.1, shadow = True, startangle = 90, pctdistance = 0.6)

plt.title("SEX ANALYSIS",bbox=dict(facecolor='g', edgecolor='blue', alpha=0.65 ))#設(shè)置標(biāo)題和標(biāo)題邊框

plt.savefig("sex_analysis.jpg")

plt.show()

#獲取城市分布

city=[]

Municipality=['上海','上海市','北京','北京市','重慶','重慶市','天津','天津市']

for friend in friends:

    if friend.province  in Municipality:

        city.append(friend.province)#直轄市直接添加城市

    else:

        city.append(friend.city)

#print(city.count('上海'))

counts=dict(Counter(city))#統(tǒng)計(jì)各個(gè)地區(qū)人數(shù)

print(counts)

df=pd.DataFrame([counts]).T#轉(zhuǎn)成DataFrame方便保存和后面畫(huà)圖,裝置成豎排形式

df.to_excel('city.xlsx')

#獲取好友簽名,生成詞云,并進(jìn)行情感分析

text1=[]

emotions=[]

for friend in friends:

    sig=friend.signature.strip()

    newsig=re.sub(re.compile('<.*?>|[0-9]|。|锦爵,|舱殿!|~|—|”|“|《|》|\?|险掀、|:'), '', sig)#去掉數(shù)字標(biāo)點(diǎn)符號(hào)

    text1.append(newsig)

    if len(newsig)>0:

        sentiments = SnowNLP(newsig).sentiments

        emotions.append(sentiments)

text = "".join(text1)

wordlist=" ".join(jieba.cut(text,cut_all=True))#結(jié)巴分詞沪袭,用空格連接

stopwords = STOPWORDS#設(shè)置停用詞

bgimg=imread(r'C:\Users\lbship\Desktop\mice.jpg')#設(shè)置背景圖片

font_path=r'C:\Windows\Fonts\simkai.ttf'

wc = WordCloud(font_path=font_path,  # 設(shè)置字體

              background_color="white",  # 背景顏色

              max_words=2000,  # 詞云顯示的最大詞數(shù)

              stopwords = stopwords,        # 設(shè)置停用詞

              mask=bgimg,  # 設(shè)置背景圖片

              max_font_size=100,  # 字體最大值

              random_state=42,#設(shè)置有多少種隨機(jī)生成狀態(tài),即有多少種配色

              width=1000, height=860, margin=2,# 設(shè)置圖片默認(rèn)的大小,margin為詞語(yǔ)邊緣距離

              ).generate(wordlist)

image_colors = ImageColorGenerator(bgimg)#根據(jù)圖片生成詞云顏色

plt.imshow(wc)

plt.axis("off")#不顯示坐標(biāo)尺寸

plt.savefig("sig.jpg")

plt.show()

#情感分析

positive=len(list(i for i in emotions if i>0.66))

normal=len(list(i for i in emotions if i<=0.66 and i>=0.33))

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

negative=len(list(i for i in emotions if i<0.33))

labels = ['POSITIVE','NORMAL','NEGATIVE']

values = (positive,normal,negative)

plt.rcParams['font.sans-serif'] = ['simHei']

plt.rcParams['axes.unicode_minus'] = False

plt.title("SENTIMENTS ANALYSIS",fontsize='large',fontweight='bold',bbox=dict(facecolor='blue', edgecolor='yellow', alpha=0.5 ))

plt.xlabel('sentiments analysis')

plt.ylabel('counts')

plt.xticks(range(3),labels)

plt.bar(range(3), values, color = 'rgb')

plt.savefig("sentiment.jpg")

plt.show()
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末樟氢,一起剝皮案震驚了整個(gè)濱河市冈绊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌埠啃,老刑警劉巖死宣,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異霸妹,居然都是意外死亡十电,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)叹螟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人台盯,你說(shuō)我怎么就攤上這事罢绽。” “怎么了静盅?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵良价,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我蒿叠,道長(zhǎng)明垢,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任市咽,我火速辦了婚禮痊银,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘施绎。我一直安慰自己溯革,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布谷醉。 她就那樣靜靜地躺著致稀,像睡著了一般。 火紅的嫁衣襯著肌膚如雪俱尼。 梳的紋絲不亂的頭發(fā)上抖单,一...
    開(kāi)封第一講書(shū)人閱讀 49,950評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼矛绘。 笑死耍休,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蔑歌。 我是一名探鬼主播羹应,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼次屠!你這毒婦竟也來(lái)了园匹?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤劫灶,失蹤者是張志新(化名)和其女友劉穎裸违,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體本昏,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡供汛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了涌穆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片怔昨。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖宿稀,靈堂內(nèi)的尸體忽然破棺而出趁舀,到底是詐尸還是另有隱情,我是刑警寧澤祝沸,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布矮烹,位于F島的核電站,受9級(jí)特大地震影響罩锐,放射性物質(zhì)發(fā)生泄漏奉狈。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一涩惑、第九天 我趴在偏房一處隱蔽的房頂上張望仁期。 院中可真熱鬧,春花似錦境氢、人聲如沸蟀拷。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)问芬。三九已至,卻和暖如春寿桨,著一層夾襖步出監(jiān)牢的瞬間此衅,已是汗流浹背强戴。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留挡鞍,地道東北人骑歹。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像墨微,于是被迫代替她去往敵國(guó)和親道媚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • 好友太多怎么倍浦活 相信做微商的微信好友都會(huì)很多,多到很多都成了“僵尸”好友忘伞,但是想要成為一個(gè)成功的微商薄翅,要有兩點(diǎn):...
    極客夜讀閱讀 514評(píng)論 0 1
  • 這次我們直奔主題,本文要做的是以下幾件事: 分析微信好友的總?cè)藬?shù)氓奈、男生數(shù)翘魄、女生數(shù)、男女比 分析好友的地域分布 利用...
    諸葛青云999閱讀 160評(píng)論 0 0
  • 早上醒來(lái)舀奶,還在實(shí)習(xí)期的亞力山大打開(kāi)手機(jī)微信熟丸,昨晚出去嗨發(fā)朋友圈寫(xiě)道“對(duì)酒當(dāng)歌,人生幾何”有數(shù)10條回復(fù)和贊伪节。他一一...
    趕緊去做閱讀 256評(píng)論 0 1
  • 讀了《生命的重建》,作者說(shuō):早晨起床的狀態(tài)太重要了绩鸣,影響一天的狀態(tài)怀大。 我想到我的外甥女每天早晨都是在大人的批評(píng)否定...
    綠水情緒療愈閱讀 457評(píng)論 2 11
  • 社區(qū)工作: 為做好”改革創(chuàng)新 奮發(fā)因?yàn)椤按笥懻摶顒?dòng)宣傳工作,使更多的居民參與進(jìn)來(lái)呀闻,社區(qū)一方面要求駐地單位利用led...
    海闊林韻閱讀 104評(píng)論 0 1