zoukankan      html  css  js  c++  java
  • 微信小程序

    所用库

    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,也同样可以查看各市的好友分布,就不贴图了,有兴趣可以试试。

  • 相关阅读:
    使用 ASP.NET Core MVC 创建 Web API(五)
    使用 ASP.NET Core MVC 创建 Web API(四)
    使用 ASP.NET Core MVC 创建 Web API(三)
    使用 ASP.NET Core MVC 创建 Web API(二)
    使用 ASP.NET Core MVC 创建 Web API(一)
    学习ASP.NET Core Razor 编程系列十九——分页
    学习ASP.NET Core Razor 编程系列十八——并发解决方案
    一个屌丝程序猿的人生(九十八)
    一个屌丝程序猿的人生(九十七)
    一个屌丝程序猿的人生(九十五)
  • 原文地址:https://www.cnblogs.com/SGzhang/p/10964705.html
Copyright © 2011-2022 走看看