杰洛特的Python之旅01_抓取微信性别数据在web上展现饼图
思路:
1、通過wxpy獲取微信的friends數(shù)據(jù)
2、通過pymongo存儲(chǔ)數(shù)據(jù):人員性別數(shù)據(jù)
3、在pymongo中處理數(shù)據(jù):按性別匯總數(shù)據(jù)
4、利用matplotlib來繪圖
5、計(jì)劃利用djongo來做web來展現(xiàn)數(shù)據(jù):簡(jiǎn)單的點(diǎn)展現(xiàn)性別餅圖
?第一步:wx.py生成圖片保存到本地
from wxpy import *
import pymongo
from pylab import *
mpl.rcParams['font.sans-serif']=['SimHei']
# 上面兩行代碼解決matplotlib繪圖不能顯示中文問題
import matplotlib.pyplot as plt
bot=Bot(cache_path ="D:\workplace\Python\Scripts\wxpy.pkl")#連接微信
?
my_friends=bot.friends() #sex province
# print(my_friends[0].name)
# print(my_friends[0].sex)
print(len(my_friends))
mylist=[]
m=0
for m in range(len(my_friends)):
?
v_data=[{"name":my_friends[m].name,"sex":my_friends[m].sex}]
mylist=mylist+v_data
m=m+1
#######################################################################################################
#以上獲取微信好友數(shù)據(jù),并組合成一個(gè)集合
#######################################################################################################
?
myclient=pymongo.MongoClient("mongodb://localhost:27017/")
mydb=myclient["flydb"]
mycol=mydb["flysite"]
?
# x=mycol.insert_many(mylist) #會(huì)出現(xiàn)反復(fù)運(yùn)行插入操作
print(mycol)
for x in mycol.find():
print(x)
?
print(mycol.aggregate([{"$group":{"_id":"$sex","personCount":{"$sum":1}}}]))
cursor=mycol.aggregate([{"$group":{"_id":"$sex","personCount":{"$sum":1}}}])
for c in cursor:
v_list=c.values()
v_list=list(v_list)
?
print(v_list[0])
if list(v_list)[0]==1:
v_men=list(v_list)[1]
elif list(v_list)[0]==2 :
v_women = list(v_list)[1]
elif list(v_list)[0] == 0:
v_other = list(v_list)[1]
print(v_men,v_women,v_other)
#######################################################################################################
##獲取匯總數(shù)據(jù),類別和值的傳入方式需要能適配,目前是固定死的傳入方式
#######################################################################################################
labels=['男性','女性','其他']
sizes=[v_men,v_women,v_other]
explode=(0,0.1,0)
fig1,ax1=plt.subplots()
ax1.pie(sizes,explode=explode,labels=labels,autopct='%1.1f%%',shadow=True,startangle=90)
ax1.axis('equal')
plt.legend()
plt.savefig("D:\\Program Files\\PyCharm 2019.1.1\\untitled1\\static\\sex.png")
###########必須用雙杠\\,不然報(bào)錯(cuò),Python中\(zhòng)代表轉(zhuǎn)義
plt.show()
plt.close()
#######################################################################################################
##制作餅圖
#######################################################################################################
?
第二步:django中調(diào)用本地圖片
views.py
from django.shortcuts import render_to_response def index(request):return render_to_response('index.html')?
index.html
<h1>微信性別比例</h1> <img src="/static/sex.png">urls.py
from laomomo import views #導(dǎo)入views模塊 from django.conf.urls import urlurlpatterns=[url(r'^',views.index),#配置當(dāng)訪問index/時(shí)去調(diào)用views下的index方法 ]settings.py最后一行增加下述兩行,用來默認(rèn)圖片路徑,解決圖片不現(xiàn)實(shí)的問題
STATIC_URL = '/static/' STATICFILES_DIRS = [os.path.join(BASE_DIR, "static"), ]總結(jié)
以上是生活随笔為你收集整理的杰洛特的Python之旅01_抓取微信性别数据在web上展现饼图的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【激励自己】牛人职场分享汇总
- 下一篇: IOS 读二进制数据文件