Python實現(xiàn)微信好友echarts信息分布

pyecharts 是一個用于生成 Echarts 圖表的類庫暇务。Echarts 是百度開源的一個數(shù)據(jù)可視化 JS 庫。用 Echarts 生成的圖可視化效果非常棒垦细,為了與 Python 進行對接腻豌,方便在 Python 中直接使用數(shù)據(jù)生成圖吝梅,我寫了這個項目苏携。

import itchat
import pandas as pd
from pyecharts import Pie, Map, Style, Page, Bar


# 根據(jù)key值得到對應(yīng)的信息
def get_key_info(friends_info, key):
    return list(map(lambda friend_info: friend_info.get(key), friends_info))


# 獲得所需的微信好友信息
def get_friends_info():
    itchat.auto_login(hotReload=True)
    friends = itchat.get_friends()
    friends_info = dict(
        # 省份
        province = get_key_info(friends, "Province"),
        # 城市
        city = get_key_info(friends, "City"),
        # 昵稱
        nickname = get_key_info(friends, "Nickname"),
        # 性別
        sex = get_key_info(friends, "Sex"),
        # 簽名
        signature = get_key_info(friends, "Signature"),
        # 備注
        remarkname = get_key_info(friends, "RemarkName"),
        # 用戶名拼音全拼
        pyquanpin = get_key_info(friends, "PYQuanPin")
    )
    return friends_info


# 性別分析
def analysisSex():
    friends_info = get_friends_info()
    df = pd.DataFrame(friends_info)
    sex_count = df.groupby(['sex'], as_index=True)['sex'].count()
    temp = dict(zip(list(sex_count.index), list(sex_count)))
    data = {}
    data['保密'] = temp.pop(0)
    data['男'] = temp.pop(1)
    data['女'] = temp.pop(2)
    # 畫圖
    page = Page()
    attr, value = data.keys(), data.values()
    chart = Pie('微信好友性別比')
    chart.add('', attr, value, center=[50, 50],
              redius=[30, 70], is_label_show=True, legend_orient='horizontal', legend_pos='center',
              legend_top='bottom', is_area_show=True)
    page.add(chart)
    page.render('C:/Users/clemente/Desktop/analysisSex.html')


# 省份分析
def analysisProvince():
    friends_info = get_friends_info()
    df = pd.DataFrame(friends_info)
    province_count = df.groupby('province', as_index=True)['province'].count().sort_values()
    temp = list(map(lambda x: x if x != '' else '未知', list(province_count.index)))
    # 畫圖
    page = Page()
    style = Style(width=1100, height=600)
    style_middle = Style(width=900, height=500)
    attr, value = temp, list(province_count)
    chart1 = Map('好友分布(中國地圖)', **style.init_style)
    chart1.add('', attr, value, is_label_show=True, is_visualmap=True, visual_text_color='#000')
    page.add(chart1)
    chart2 = Bar('好友分布柱狀圖', **style_middle.init_style)
    chart2.add('', attr, value, is_stack=True, is_convert=True,
               label_pos='inside', is_legend_show=True, is_label_show=True)
    page.add(chart2)
    page.render('C:/Users/clemente/Desktop/analysisProvince.html')
    

# 具體省份分析
def analysisCity(province):
    friends_info = get_friends_info()
    df = pd.DataFrame(friends_info)
    temp1 = df.query('province == "%s"' % province)
    city_count = temp1.groupby('city', as_index=True)['city'].count().sort_values()
    attr = list(map(lambda x: '%s市' % x if x != '' else '未知', list(city_count.index)))
    value = list(city_count)
    # 畫圖
    page = Page()
    style = Style(width=1100, height=600)
    style_middle = Style(width=900, height=500)
    chart1 = Map('%s好友分布' % province, **style.init_style)
    chart1.add('', attr, value, maptype='%s' % province, is_label_show=True,
               is_visualmap=True, visual_text_color='#000')
    page.add(chart1)
    chart2 = Bar('%s好友分布柱狀圖' % province, **style_middle.init_style)
    chart2.add('', attr, value, is_stack=True, is_convert=True, label_pos='inside', is_label_show=True)
    page.add(chart2)
    page.render('C:/Users/clemente/Desktop/analysisCity.html')
    



if __name__ == '__main__':
    analysisSex()
    analysisProvince()
    analysisCity("湖北")
image.png

image.png

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末履羞,一起剝皮案震驚了整個濱河市忆首,隨后出現(xiàn)的幾起案子糙及,更是在濱河造成了極大的恐慌,老刑警劉巖版姑,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件聪蘸,死亡現(xiàn)場離奇詭異健爬,居然都是意外死亡娜遵,警方通過查閱死者的電腦和手機壤短,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門蒜绽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人骡和,你說我怎么就攤上這事。” “怎么了婆赠?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵蛆挫,是天一觀的道長悴侵。 經(jīng)常有香客問我可免,道長做粤,這世上最難降的妖魔是什么怕品? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任修己,我火速辦了婚禮迎罗,結(jié)果婚禮上纹安,老公的妹妹穿的比我還像新娘。我一直安慰自己光督,他們只是感情好结借,可當(dāng)我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布咖熟。 她就那樣靜靜地躺著馍管,像睡著了一般薪韩。 火紅的嫁衣襯著肌膚如雪俘陷。 梳的紋絲不亂的頭發(fā)上宛逗,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天雷激,我揣著相機與錄音屎暇,去河邊找鬼根悼。 笑死蜀撑,一個胖子當(dāng)著我的面吹牛矿卑,可吹牛的內(nèi)容都是我干的母廷。 我是一名探鬼主播琴昆,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼业舍,長吁一口氣:“原來是場噩夢啊……” “哼舷暮!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起巢墅,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤君纫,失蹤者是張志新(化名)和其女友劉穎蓄髓,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡枉阵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了耻陕。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片诗宣。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡梧田,死狀恐怖裁眯,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響专控,放射性物質(zhì)發(fā)生泄漏伦腐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望嘁扼。 院中可真熱鬧趁啸,春花似錦不傅、人聲如沸访娶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽割笙。三九已至,卻和暖如春妻率,著一層夾襖步出監(jiān)牢的瞬間宫静,已是汗流浹背券时。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留震檩,地道東北人抛虏。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像沸毁,于是被迫代替她去往敵國和親傻寂。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,037評論 2 355

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

  • 神奇的Python用Python打造微信聊天機器人之一:給好友發(fā)信息 友情提示:該操作可能會導(dǎo)致微信被封號,請大家...
    少兒創(chuàng)客閱讀 2,877評論 0 5
  • 《憶王孫》 “口外特色植物” 羅布麻,花開花謝茶中飲侮腹。 沙漠鹽堿紅柳長凯旋, 西域沙棗白桑果钠署, 喀什噶爾老胡楊荒椭, 生死...
    洋州客閱讀 184評論 2 0
  • 立冬已過唐片,天寒將至涨颜,可有些人庭瑰,有些事總是讓人心暖不變弹灭。 有一種暖心叫惦記。有句話說得真好:不聯(lián)系不代表不...
    秋木心閱讀 652評論 0 1
  • 大學(xué)宿舍里的夜是粘稠的,濕熱的卢未,漆黑而無盡頭的辽社。如同夏季的暴雨來臨之前,空氣中帶著一種讓人動彈不得的味道就乓。每...
    豹皮大酒樓閱讀 375評論 2 3
  • 大一下學(xué)期的開學(xué)第五天噩翠,正好也是正月十五元宵節(jié)。 是我記不清第幾次不在家里過的元宵節(jié)了擅笔。 卻是仍然像往年一樣的想回...
    Popos閱讀 89評論 0 0