• 微信小程序


    所用库

    1、pillow 2、pyecharts 3、itchat 4、jieba 5、numpy 6、pandas 7、wxpy

    温馨提示:1、本篇博因需要所用pyecharts为0.5.X版本,anaconda所下载的是1.X.X版本

                      2、调用pyechart中的map模块需要安装地图数据包:

            pip install echarts-china-provinces-pypkg
            pip install echarts-countries-pypkg

    一、登陆微信并获取我的好友相关信息

    from wxpy import *
    #初始化机器人,选择缓存模式(扫码)登录
    bot=Bot(cache_path=True)
    #获取我的所有微信好友信息
    friend_all=bot.friends()
    print(friend_all[0].raw)#friend_all[0]是我的微信昵称,.raw 则是获取我的全部信息
    ############运行后会自动弹出二维码页面,手机扫描登陆即可###########

    运行结果

    二、可以查看我们的列表中联系人的数量

    print(len(friend_all)
    >>>179

    三、获取好友相关信息,并把它存放在一个excel表格

    将获取的好友信息所需要的部分进行处理,每个好友的信息都是一个字典,对这几个 key 提取相应的值,放入一个列表 list_0 中,即每个好友的这些 key的值做成了一个列表,在对所有的好友使用 for 循环进行同样的操作,将所有好友的列表做成一个大列表lis的元素,即列表中的元素是列表。

    lis=[]
    for a_friend in friend_all:
        NickName=a_friend.raw.get('NickName',None)
        #Sex=afriend.raw.get('Sex',None)
        Sex={1:"",2:"",0:"其他"}.get(a_friend.raw.get('Sex',None),None)
        City=a_friend.raw.get('City',None)
        Province=a_friend.raw.get("Province",None)
        Sigenature=a_friend.raw.get("Signature",None)
        HeadImgFlagUrl=a_friend.raw.get("HeadImgFlagUrl",None)
        HeadImgFlag=a_friend.raw.get("HeadImgFlag",None)
        list_0=[NickName,Sex,City,Province,Sigenature,HeadImgFlagUrl,HeadImgFlag]
        lis.append(list_0)

    然后再将列表放入创建的excel表格中

    def lis2e07(filename,lis):
        import openpyxl
        wb = openpyxl.Workbook()
        sheet = wb.active
        sheet.title = 'list2excel07'
        file_name = filename +'.xlsx'
        for i in range(0, len(lis)):
            for j in range(0, len(lis[i])):
                    sheet.cell(row=i+1, column=j+1, value=str(lis[i][j]))
        wb.save(file_name)
        print("写入数据成功!")
    lis2e07('list3',lis)

    结果显示

    四、统计列表联系人所在城市占比

    #######################粗略获取好友信息###############################
    Friends=bot.friends() data=Friends.stats_text(total=True,sex=True,top_provinces=30,top_cities=300) print(data)
    ######可以从存储在本地的 excel 中读取数据进行分析在执行以
    下代码之前,我们需要先把 excel 文件加一个列标题行。可直接另存为上面的excel表格
    然后增加后续直接用另存为的表格########################
    from pandas import read_excel df=read_excel('list4.xlsx',sheet_name='list2excel07') print(df.tail(7)) df.city.count() df.city.describe()

    结果显示

    五、对列表中联系人所在城市绘制词云

    ①利用PIL+WordCloud对列表联系人所在城市绘制词云

    from wordcloud import WordCloud
    import matplotlib.pyplot as plt
    import pandas as pd
    from pandas import DataFrame
    word_list= df['city'].fillna('0').tolist()#将 dataframe 的列转化为 list,其中的 nan 用“0”替换
    new_text = ' '.join(word_list)
    wordcloud = WordCloud(font_path='simhei.ttf', background_color="black").generate(new_text)
    plt.imshow(wordcloud)
    plt.axis("off")
    plt.show() 

    结果显示

    ②用pyecharts绘制词云并将其保存为html文件

    import pandas as pd
    #count=df.city.value_count()#对dataframe对 dataframe 进行全频率统计,排除了 nan
    city_list=df['city'].fillna('NAN').tolist()#将dataframe的列转化为list,其中nan用NAN替换
    count_city=pd.value_counts(city_list)#对list进行全频率统计
    from pyecharts import WordCloud
    name=count_city.index.tolist()
    value=count_city.tolist()
    wordcloud=WordCloud(width=1300,height=620)
    wordcloud.add("",name,value,word_size_range=[20,100])
    wordcloud.show_config()
    wordcloud.render(r'cy.html')

    结果显示

    六、列表联系人所在省份地图并保存为HTML文件

    province_list=df['province'].fillna('NAN').tolist()
    count_province=pd.value_counts(province_list)#对list进行全频率统计
    from pyecharts import Map
    value=count_province.tolist()
    attr=count_province.index.tolist()
    map=Map("各省微信好友分布",width=1000,height=600) 
    map.add("",attr,value,maptype='china',is_visualmap=True,visual_text_color='#000',is_label_show=True)#显示地图上的省份
    map.show_config()
    map.render(r'FriendMap.html')

    注:若地图显示不全或者只显示南海诸岛部分请安装map数据包(安装方法见本博开头)

    显示结果

     OK,也同样可以查看各市的好友分布,就不贴图了,有兴趣可以试试。

  • 相关阅读:
    读取json中的中文乱码
    Qt新建一个对话框
    Qt窗口全屏
    Qt设置QWidget背景图片
    Qt加载本地图片
    junit5|软断言
    Classpath resource [/data/department/createDepartment.csv] does not exist
    有个用户反馈上传头像失败,分析原因?
    手机扫描二维码的测试用例(转载)
    一次完整的HTTP请求过程是怎么样的呢?【图文详解】(转载)
  • 原文地址:https://www.cnblogs.com/SGzhang/p/10964705.html
Copyright © 2020-2023  润新知