99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁(yè)精彩閱讀Python利用itchat對(duì)微信中好友數(shù)據(jù)實(shí)現(xiàn)簡(jiǎn)單分析的方法
Python利用itchat對(duì)微信中好友數(shù)據(jù)實(shí)現(xiàn)簡(jiǎn)單分析的方法
2018-07-22
收藏

Python利用itchat對(duì)微信中好友數(shù)據(jù)實(shí)現(xiàn)簡(jiǎn)單分析的方法

Python 熱度一直很高,我感覺(jué)這就是得益于擁有大量的包資源,極大的方便了開(kāi)發(fā)人員的需求。下面這篇文章主要給大家介紹了關(guān)于Python利用itchat實(shí)現(xiàn)對(duì)微信中好友數(shù)據(jù)進(jìn)行簡(jiǎn)單分析的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。
前言
最近在一個(gè)微信公眾號(hào)上看到一個(gè)調(diào)用微信 API 可以對(duì)微信好友進(jìn)行簡(jiǎn)單數(shù)據(jù)分析的一個(gè)包 itchat 感覺(jué)挺好用的,就簡(jiǎn)單嘗試了一下。
庫(kù)文檔說(shuō)明鏈接在這: itchat
安裝
在終端中輸入以下命令,完成微信的API包itchat的安裝。
我們這里使用python3的環(huán)境(python2也是可行的):    
sudo pip3 install itchat --upgrade
通過(guò)該命令判斷是否安裝成功:    
python3 -c "import itchat"

如果沒(méi)有報(bào)錯(cuò)信息說(shuō)明你已經(jīng)將實(shí)驗(yàn)環(huán)境安裝完成。


微信好友數(shù)據(jù)進(jìn)行分析示例

首先統(tǒng)計(jì)一下微信好友的男女比例:

#coding:utf-8
importitchat
# 先登錄
itchat.login()
# 獲取好友列表
friends=itchat.get_friends(update=True)[0:]
# 初始化計(jì)數(shù)器,有男有女,當(dāng)然,有些人是不填的
male=female=other=0
# 遍歷這個(gè)列表,列表里第一位是自己,所以從"自己"之后開(kāi)始計(jì)算# 1表示男性,2女性
foriinfriends[1:]:
 sex=i["Sex"]
 ifsex==1:
 male+=1
 elifsex==2:
 female+=1
 else:
 other+=1
 # 總數(shù)算上,好計(jì)算比例啊~
 total=len(friends[1:])
 # 好了,打印結(jié)果
 
print(u"男性好友:%.2f%%"%(float(male)/total*100))
print(u"女性好友:%.2f%%"%(float(female)/total*100))
print(u"其他:%.2f%%"%(float(other)/total*100))
 
 
# 使用echarts,加上這段
fromechartsimportEchart, Legend, Pie
chart=Echart(u'%s的微信好友性別比例'%(friends[0]['NickName']),'from WeChat')
chart.use(Pie('WeChat',[{'value': male,'name': u'男性 %.2f%%'%(float(male)/total*100)},{'value': female,'name': u'女性 %.2f%%'%(float(female)/total*100)},{'value': other,'name': u'其他 %.2f%%'%(float(other)/total*100)}],radius=["50%","70%"]))
chart.use(Legend(["male","female","other"]))
delchart.json["xAxis"]
delchart.json["yAxis"]
chart.plot()
chart.save("/Library","phones")

效果如圖:(不知道為什么還有那么多 其他。。。)



然后抓取所有好友的個(gè)性簽名,看看其中的高頻詞匯:

# coding:utf-8
importitchat
importre
itchat.login()
friends=itchat.get_friends(update=True)[0:]
tList=[]
foriinfriends:
 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分詞
importjieba
wordlist_jieba=jieba.cut(text, cut_all=True)
wl_space_split=" ".join(wordlist_jieba)
# wordcloud詞云
importmatplotlib.pyplot as plt
fromwordcloudimportWordCloud, ImageColorGenerator
importos
importnumpy as np
importPIL.Image as Image
d=os.path.dirname(__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=40, random_state=42,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()
# 保存圖片 并發(fā)送到手機(jī)
my_wordcloud.to_file(os.path.join(d,"wechat_cloud.png"))
itchat.send_image("wechat_cloud.png",'filehelper')

效果如圖:

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值



數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說(shuō)明請(qǐng)參見(jiàn):http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }