Python实现微信好友的数据分析

基于微信开放的个人号接口python库itchat,实现对微信好友的获取,并对省份、性别、微信签名做数据分析。

效果:

直接上代码,建三个空文本文件stopwords.txt,newdit.txt、unionWords.txt,下载字体simhei.ttf或删除字体要求的代码,就可以直接运行。

 #wxfriends.py 2018-07-09
import itchat
import sys
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']#绘图时可以显示中文
plt.rcParams['axes.unicode_minus']=False#绘图时可以显示中文
import jieba
import jieba.posseg as pseg
from scipy.misc import imread
from wordcloud import WordCloud
from os import path
#解决编码问题
non_bmp_map = dict.fromkeys(range(0x10000, sys.maxunicode + 1), 0xfffd)

#获取好友信息
def getFriends():
  friends = itchat.get_friends(update=True)[0:]
  flists = []
  for i in friends:
    fdict={}
    fdict['NickName']=i['NickName'].translate(non_bmp_map)
    if i['Sex'] == 1:
      fdict['Sex']='男'
    elif i['Sex'] == 2:
      fdict['Sex']='女'
    else:
      fdict['Sex']='雌雄同体'
    if i['Province'] == '':
      fdict['Province'] ='未知'
    else:
      fdict['Province']=i['Province']
    fdict['City']=i['City']
    fdict['Signature']=i['Signature']
    flists.append(fdict)
  return flists

#将好友信息保存成CSV
def saveCSV(lists):
  df = pd.DataFrame(lists)
  try:
    df.to_csv("wxfriends.csv",index = True,encoding='gb18030')
  except Exception as ret:
    print(ret)
  return df

#统计性别、省份字段
def anysys(df):
  df_sex = pd.DataFrame(df['Sex'].value_counts())
  df_province = pd.DataFrame(df['Province'].value_counts()[:15])
  df_signature = pd.DataFrame(df['Signature'])
  return df_sex,df_province,df_signature

#绘制柱状图,并保存
def draw_chart(df_list,x_feature):
  try:
    x = list(df_list.index)
    ylist = df_list.values
    y = []
    for i in ylist :
      for j in i:
        y.append(j)
    plt.bar(x,y,label=x_feature)
    plt.legend()
    plt.savefig(x_feature)
    plt.close()
  except:
    print("绘图失败")

#解析取个性签名构成列表
def getSignList(signature):
  sig_list = []
  for i in signature.values:
    for j in i:
      sig_list.append(j.translate(non_bmp_map))
  return sig_list

#分词处理,并根据需要填写停用词、自定义词、合并词替换
def segmentWords(txtlist):
  stop_words = set(line.strip() for line in open('stopwords.txt', encoding='utf-8'))
  newslist = []
  #新增自定义词
  jieba.load_userdict("newdit.txt")
  for subject in txtlist:
    if subject.isspace():
      continue
    word_list = pseg.cut(subject)

    for word, flag in word_list:
      if not word in stop_words and flag == 'n' or flag == 'eng' and word !='span' and word !='class':
        newslist.append(word)
   #合并指定的相似词
  for line in open('unionWords.txt', encoding='utf-8'):
    newline = line.encode('utf-8').decode('utf-8-sig')  #解决\ufeff问题
    unionlist = newline.split("*")
    for j in range(1,len(unionlist)):
      #wordDict[unionlist[0]] += wordDict.pop(unionlist[j],0)
      for index,value in enumerate(newslist):
        if value == unionlist[j]:
          newslist[index] = unionlist[0]
  return newslist

#高频词统计
def countWords(newslist):
  wordDict = {}
  for item in newslist:
    wordDict[item] = wordDict.get(item,0) + 1
  itemList = list(wordDict.items())
  itemList.sort(key=lambda x:x[1],reverse=True)
  for i in range(100):
    word, count = itemList[i]
    print("{}:{}".format(word,count))

#绘制词云
def drawPlant(newslist):
  d = path.dirname(__file__)
  mask_image = imread(path.join(d, "timg.png"))
  content = ' '.join(newslist)
  wordcloud = WordCloud(font_path='simhei.ttf', background_color="white",width=1300,height=620, max_words=200).generate(content)  #mask=mask_image,
  # Display the generated image:
  plt.imshow(wordcloud)
  plt.axis("off")
  wordcloud.to_file('wordcloud.jpg')
  plt.show()

def main():
  #登陆微信
  itchat.auto_login()  # 登陆后不需要扫码  hotReload=True
  flists = getFriends()
  fdf = saveCSV(flists)
  df_sex,df_province,df_signature = anysys(fdf)
  draw_chart(df_sex,"性别")
  draw_chart(df_province,"省份")
  wordList = segmentWords(getSignList(df_signature))
  countWords(wordList)
  drawPlant(wordList)

main()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • python微信好友数据分析详解

    基于微信开放的个人号接口python库itchat,实现对微信好友的获取,并对省份.性别.微信签名做数据分析. 效果: 直接上代码,建三个空文本文件stopwords.txt,newdit.txt.unionWords.txt,下载字体simhei.ttf或删除字体要求的代码,就可以直接运行. #wxfriends.py 2018-07-09 import itchat import sys import pandas as pd import matplotlib.pyplot as plt

  • 使用Python对微信好友进行数据分析

    1.准备工作 1.1 库介绍 只有登录微信才能获取到微信好友的信息,本文采用wxpy该第三方库进行微信的登录以及信息的获取. wxpy 在 itchat 的基础上,通过大量接口优化提升了模块的易用性,并进行丰富的功能扩展. wxpy一些常见的场景: •控制路由器.智能家居等具有开放接口的玩意儿 •运行脚本时自动把日志发送到你的微信 •加群主为好友,自动拉进群中 •跨号或跨群转发消息 •自动陪人聊天 •逗人玩 总而言之,可用来实现各种微信个人号的自动化操作. 1.2 wxpy库安装 wxpy 支持

  • Python实现的微信好友数据分析功能示例

    本文实例讲述了Python实现的微信好友数据分析功能.分享给大家供大家参考,具体如下: 这里主要利用python对个人微信好友进行分析并把结果输出到一个html文档当中,主要用到的python包为itchat,pandas,pyecharts等 1.安装itchat 微信的python sdk,用来获取个人好友关系.获取的代码 如下: import itchat import pandas as pd from pyecharts import Geo, Bar itchat.login() f

  • 基于Python实现的微信好友数据分析

    最近微信迎来了一次重要的更新,允许用户对"发现"页面进行定制.不知道从什么时候开始,微信朋友圈变得越来越复杂,当越来越多的人选择"仅展示最近三天的朋友圈",大概连微信官方都是一脸的无可奈何.逐步泛化的好友关系,让微信从熟人社交逐渐过渡到陌生人社交,而朋友圈里亦真亦幻的状态更新,仿佛在努力证明每一个个体的"有趣". 有人选择在朋友圈里记录生活的点滴,有人选择在朋友圈里展示观点的异同,可归根到底,人们无时无刻不在窥探着别人的生活,唯独怕别人过多地了解

  • Python实现微信好友的数据分析

    基于微信开放的个人号接口python库itchat,实现对微信好友的获取,并对省份.性别.微信签名做数据分析. 效果: 直接上代码,建三个空文本文件stopwords.txt,newdit.txt.unionWords.txt,下载字体simhei.ttf或删除字体要求的代码,就可以直接运行. #wxfriends.py 2018-07-09 import itchat import sys import pandas as pd import matplotlib.pyplot as plt

  • python 微信好友特征数据分析及可视化

    一.背景及研究现状 在我国互联网的发展过程中,PC互联网已日趋饱和,移动互联网却呈现井喷式发展.数据显示,截止2013年底,中国手机网民超过5亿,占比达81%.伴随着移动终端价格的下降及wifi的广泛铺设,移动网民呈现爆发趋势. 微信已经成为连接线上与线下.虚拟与现实.消费与产业的重要工具,它提高了O2O类营销用户的转化率.过去开发软件,程序员常要考虑不同开发环境的语言.设备的适配性和成本.现在,开发者可以在一个"类操作底层"去开发应用,打破了过去受限的开发环境. 二.研究意义及目的

  • Python实现微信好友数据爬取及分析

    前言 随着微信的普及,越来越多的人开始使用微信.微信渐渐从一款单纯的社交软件转变成了一个生活方式,人们的日常沟通需要微信,工作交流也需要微信.微信里的每一个好友,都代表着人们在社会里扮演的不同角色. 今天这篇文章会基于Python对微信好友进行数据分析,这里选择的维度主要有:性别.头像.签名.位置,主要采用图表和词云两种形式来呈现结果,其中,对文本类信息会采用词频分析和情感分析两种方法.常言道:工欲善其事,必先利其器也.在正式开始这篇文章前,简单介绍下本文中使用到的第三方模块: itchat:微

  • 基于python实现微信好友数据分析(简单)

    一.功能介绍 本文主要介绍利用网页端微信获取数据,实现个人微信好友数据的获取,并进行一些简单的数据分析,功能包括: 1.爬取好友列表,显示好友昵称.性别和地域和签名, 文件保存为 xlsx 格式 2.统计好友的地域分布,并且做成词云和可视化展示在地图上 二.依赖库 1.Pyecharts:一个用于生成echarts图表的类库,echarts是百度开源的一个数据可视化库,用echarts生成的图可视化效果非常棒,使用pyechart库可以在python中生成echarts数据图. 2.Itchat

  • python 获取微信好友列表的方法(微信web)

    如下所示: import urllib import urllib2 import os import time import re import cookielib import xml.dom.minidom import json tip = 0 uuid = '' successUrl = '' skey = '' wxsid = '' wxuin = '' pass_ticket = '' deviceId = 'e000000000000000' imagesPath = os.ge

  • python给微信好友定时推送消息的示例

    如下所示: from __future__ import unicode_literals from threading import Timer from wxpy import * import requests #bot = Bot() #bot = Bot(console_qr=2,cache_path="botoo.pkl")#这里的二维码是用像素的形式打印出来!,如果你在win环境上运行,替换为 bot=Bot() bot = Bot(cache_path=True) de

  • Python分析微信好友性别比例和省份城市分布比例的方法示例【基于itchat模块】

    本文实例讲述了Python分析微信好友性别比例和省份城市分布比例的方法.分享给大家供大家参考,具体如下: 安装itchat pip install itchat 使用 新建wxfx.py,拷贝以下代码 # -*- coding: utf-8 -*- #导入模块 from wxpy import * ''' 微信机器人登录有3种模式, (1)极简模式:robot = Bot() (2)终端模式:robot = Bot(console_qr=True) (3)缓存模式(可保持登录状态):robot

  • 用 python 进行微信好友信息分析

    1. 使用到的库 ① wxpy:初始化微信机器人 ② openpyxl:保存微信好友数据为Excel表格 ③ pyecharts:生成可视化的地图 ④ wordcloud.matplotlib.jieba:生成词云图 [特别提醒]:pyecharts 库用的是0.5.x版本,而在 pip 中安装的为1.x.x版本,因此需要自行到[官网]中下载. 2. 基本功能 ① 分析微信好友数据 ② 生成词云图 ③ 生成地图展示 3. 代码实现 此处使用类来实现 (1) 导入模块 # 导入模块 from wx

  • python查看微信好友是否删除自己

    本文实例为大家分享了python微信好友删除的具体代码,供大家参考,具体内容如下 #weixin.py #coding:utf-8 # !/usr/bin/env python # coding=utf-8 #通过该程序可以发现被删除的好友 import os import urllib, urllib2 import re import cookielib import time import xml.dom.minidom import json import sys import math

随机推荐