您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“怎么用Python和用戶實際地理位置做任意區(qū)域人員流量圖”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“怎么用Python和用戶實際地理位置做任意區(qū)域人員流量圖”吧!
騰訊其實開放了數(shù)據(jù)接口,但是只能商用:
經(jīng)過分析發(fā)現(xiàn),每次請求都會發(fā)送4個post請求,每次請求的參數(shù)如下:
rank值從1變化到4,咱也不知道是啥意思,索性就都爬了,大不了再去重
返回數(shù)據(jù)如下:
主要是locs字段,以第一組數(shù)據(jù)為例,3295代表緯度信息,11590代表經(jīng)度信息,分別除100既是經(jīng)緯度原始值,6代表該位置人數(shù)。
下面我們開始寫寫代碼獲取數(shù)據(jù):
import requests import json header={ 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:82.0) Gecko/20100101 Firefox/82.0'} url = 'https://xingyun.map.qq.com/api/getXingyunPoints' for i in range(1,5): payload = {'count': i, 'rank': 0} response = requests.post(url, data=json.dumps(payload)) datas=json.loads(response.text)['locs'] datas=datas.split(',') datas=[int(i) for i in datas[:-1]] all_data=[] a=[] for n,data in enumerate(datas): a.append(data) all_data.append(a) if (n+1)%3==0: a=[] all_data=[[i[0]/100,i[1]/100,i[2]] for i in all_data]
將數(shù)據(jù)轉(zhuǎn)換為DataFrame格式:
import pandas as pd lat=[float(i[0]) for i in all_data] long=[i[1] for i in all_data] weight=[i[2] for i in all_data] dataframe=pd.DataFrame({'緯度':lat,'經(jīng)度':long,'人數(shù)':weight})
對數(shù)據(jù)進(jìn)行去重:
dataframe=dataframe.drop_duplicates(keep='first')
有了這些坐標(biāo)信息,我們可以估算一個區(qū)域的人流量
DataFrame.drop_duplicates(subset=None, keep='first', inplace=False)
subset用來指定特定的列,默認(rèn)所有列;
keep="first"表示刪除重復(fù)項并保留第一次出現(xiàn)的項,此外,keep值還可以為'last':表示保留最后一次出現(xiàn)的值;'false':表示所有相同的數(shù)據(jù)都刪除
data1=dataframe[(dataframe.緯度.between(39.26,41.03)) & (dataframe.經(jīng)度.between(115.25,117.30))]
import folium from folium.plugins import HeatMap map_data = data1[['緯度', '經(jīng)度', '人數(shù)']].values.tolist() hmap = folium.Map( location=[data1['緯度'].mean(), data1['經(jīng)度'].mean()], #地圖中心坐標(biāo) control_scale=True, zoom_start=13 #地圖顯示級別 ) hmap.add_child(HeatMap(map_data, radius=5, gradient={.1: 'blue',.3: 'lime', .5: 'yellow',.7:'red'}))
到此,相信大家對“怎么用Python和用戶實際地理位置做任意區(qū)域人員流量圖”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。