• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

用Python和用户实际地理位置,做任意区域人员流量图

python 搞java代码 3年前 (2022-05-21) 37次浏览 已收录 0个评论

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

以下文章来源于python数据分析之禅 ,作者小dull鸟

Python爬虫、数据分析、网站开发等案例教程视频免费在线观看

https://space.bilibili.<a href="https://www.gaodaima.com/tag/com" title="查看更多关于com的文章" target="_blank">com</a>/523606542

www#gaodaima.com来源gaodai#ma#com搞@@代~&码网搞代码

最近偶然看到了腾讯的大数据星云图,非常漂亮,如下图:

 

这些数据代表使用腾讯定位服务的用户实际地理位置,例如微信、QQ、腾讯地图等,所以使用量还是表达的,此图可以间接显示人流量情况

该网站还可以查看区域热力图:

 

但是只有个别区域

于是我萌生一个想法,用python任意区域人员流量图

经过不懈努力,没想到还真给实现了,下面带大家一起学习一下这一过程:

一、首先是数据获取数据获取

腾讯其实开放了数据接口,但是只能商用:

 

但是不用怕,我们还有其他办法获取

进入主页:https://xingyun.map.qq.com/

在主页抓包,获得数据接口:

 

经过分析发现,每次请求都会发送4个post请求,每次请求的参数如下:

 

 

 

 

rank值从1变化到4,咱也不知道是啥意思,索性就都爬了,大不了再去重

返回数据如下:

 

主要是locs字段,以第一组数据为例,3295代表纬度信息,11590代表经度信息,分别除100既是经纬度原始值,6代表该位置人数。

下面我们开始写写代码获取数据:

<span>import</span><span> requests
</span><span>import</span><span> json
header</span>=<span>{
    </span><span>"</span><span>User-Agent</span><span>"</span>:<span>"</span><span>Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:82.0) Gecko/20100101 Firefox/82.0</span><span>"</span><span>}
url </span>= <span>"</span><span>https://xingyun.map.qq.com/api/getXingyunPoints</span><span>"</span>
<span>for</span> i <span>in</span> range(1,5<span>):
    payload </span>= {<span>"</span><span>count</span><span>"</span>: i, <span>"</span><span>rank</span><span>"</span><span>: 0}
    response </span>= requests.post(url, data=<span>json.dumps(payload))
    datas</span>=json.loads(response.text)[<span>"</span><span>locs</span><span>"</span><span>]
    datas</span>=datas.split(<span>"</span><span>,</span><span>"</span><span>)
    datas</span>=[int(i) <span>for</span> i <span>in</span> datas[:-1<span>]]
    all_data</span>=<span>[]
    a</span>=<span>[]
    </span><span>for</span> n,data <span>in</span><span> enumerate(datas):
        a.append(data)
        all_data.append(a)
        </span><span>if</span> (n+1)%3==<span>0:
            a</span>=<span>[]
all_data</span>=[[i[0]/100,i[1]/100,i[2]] <span>for</span> i <span>in</span> all_data]

 

将数据转换为DataFrame格式:

<span>import</span><span> pandas as pd
lat</span>=[float(i[0]) <span>for</span> i <span>in</span><span> all_data]
long</span>=[i[1] <span>for</span> i <span>in</span><span> all_data]
weight</span>=[i[2] <span>for</span> i <span>in</span><span> all_data]
dataframe</span>=pd.DataFrame({<span>"</span><span>纬度</span><span>"</span>:lat,<span>"</span><span>经度</span><span>"</span>:long,<span>"</span><span>人数</span><span>"</span>:weight})

 

对数据进行去重:

dataframe=dataframe.drop_duplicates(keep=<span>"</span><span>first</span><span>"</span>)

 

有了这些坐标信息,我们可以估算一个区域的人流量

pandas小知识:

DataFrame.drop_duplicates(subset=None, keep=<span>"</span><span>first</span><span>"</span>, inplace=False)

 

subset用来指定特定的列,默认所有列;
keep=”first”表示删除重复项并保留第一次出现的项,此外,keep值还可以为”last”:表示保留最后一次出现的值;”false”:表示所有相同的数据都删除

选定区域:

data1=dataframe[(dataframe.纬度.between(39.26,41.03)) & (dataframe.经度.between(115.25,117.30))]

 

二、用folium画热力图:

<span>import</span><span> folium
</span><span>from</span> folium.plugins <span>import</span><span> HeatMap
map_data </span>= data1[[<span>"</span><span>纬度</span><span>"</span>, <span>"</span><span>经度</span><span>"</span>, <span>"</span><span>人数</span><span>"</span><span>]].values.tolist()
hmap </span>=<span> folium.Map(
    location</span>=[data1[<span>"</span><span>纬度</span><span>"</span>].mean(), data1[<span>"</span><span>经度</span><span>"</span>].mean()],  <span>#</span><span>地图中心坐标</span>
    control_scale=<span>True, 
    zoom_start</span>=13    <span>#</span><span>地图显示级别</span>
<span>)
hmap.add_child(HeatMap(map_data, radius</span>=5, gradient={.1: <span>"</span><span>blue</span><span>"</span>,.3: <span>"</span><span>lime</span><span>"</span>, .5: <span>"</span><span>yellow</span><span>"</span>,.7:<span>"</span><span>red</span><span>"</span>}))

 

 

真方!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:用Python和用户实际地理位置,做任意区域人员流量图

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址