用 Python 绘制全国鸿星尔克门店分布图

目录
  • 1、需求分析
  • 2、发送请求
  • 3、数据处理

1、需求分析

首先我们打开地图搜索“鸿星尔克”:

F12打开浏览器开发者模式,找到如下链接。

复制该链接到浏览器,发现这是一个json格式的数据集。我们所需要的省份和对应数量还有各个城市对应的数量都在其中。

2、发送请求

我们首先模拟浏览器来发送请求获取到这个json数据集,然后获取各个城市鸿星尔克门店及其对应数量 。

url = 'https://map.baidu.com/?newmap=1&reqflag=pcmap&biz=1&from=webmap&da_par=baidu&pcevaname=pc4.1&qt=s&da_src=searchBox.button&wd=%E9%B8%BF%E6%98%9F%E5%B0%94%E5%85%8B&c=1&src=0&wd2=&pn=0&sug=0&l=5&b=(7854419.220000001,831323.8799999999;15358291.22,8507227.879999999)&from=webmap&biz_forward={%22scaler%22:1,%22styles%22:%22pl%22}&sug_forward=&auth=yER4N%40Rwcw0cBSVCeS%3DdQBAfLdF6agFfuxLzNBVHVHRtxZhQxjh%40wWvvYgP1PcGCgYvjPuVtvYgPMGvgWv%40uVtvYgPPxRYuVtvYgP%40vYZcvWPCuVtvYgP%40ZPcPPuVtvYgPhPPyheuVtcvY1SGpuRtDpnSCE%40%40By1uVtCGYuVt1GgvPUDZYOYIZuVt1cv3uVtGccZcuVtPWv3GuBtR9KxXwPYIUvhgMZSguxzBEHLNRTVtcEWe1GD8zv7u%40ZPuVtc3CuVteuEthjzgjyBODQEYHUHBxfiKKvMuxcc%40AJ&seckey=cde6ebb241c3d75c675c8688828640edba33c570fc006f6ccdee864f2e95d88033fc19e794fee19c2417a6953ba260f3e91efa7e82cbc9c45b5854aec79ce924b08cce22526301f3a8c80710ebb635e73f5eccb560ee1dc38add2dfc793843279646449563fa4547850c144c3838de6fb1efaab7253aa6e99c1de56b4ddbad3905f480e4d46e5414c519465f08bedee98acac8fc7d2f84f413b041287538b09a811ee347b66a4c2c948f2ffa2f6e7674e0c5cb2b6407b610181af9064f870280fd7053482a91caa7cb762068ea41c4bb7bd2f7899f81a2ba5ab3fde28503a6fdc54b0fdee52cc2d02da76e1a4f1b4745&device_ratio=1&tn=B_NORMAL_MAP&nn=0&ie=utf-8&t=1627305062813'

    headers = {
        'Cookie': 'BIDUPSID=5FDDBE7E96E9CA6D71998093E123403A; PSTM=1627225875; BAIDUID=F934E08738623DF508F108DEF391CFB9:FG=1; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; BCLID_BFESS=8512773460870798959; BDSFRCVID_BFESS=5UPOJeC62l07libepqHRKmSPxe5rbsOTH6aoyt6boQjiS8lguPwkEG0PHf8g0Ku-S2EqogKKy2OTH9DF_2uxOjjg8UtVJeC6EG0Ptf8g0M5; H_BDCLCKID_SF_BFESS=tJk8_DPbJK-3fP36q4cBb-4WhmT22-us3g7W2hcH0b61EnR_XRQcbJ8LQ-Qi2lJTMITiaKJjBMb1DbRMLfjN5TODKf-DKb3pWDTm_q5TtUJMeCnTDMRh-l04XNbyKMnitIv9-pPKWhQrh459XP68bTkA5bjZKxtq3mkjbPbDfn028DKuDj-WDjJ0DGRf-b-X-I6b0nRH-njfebRNq4nKbICShG4tLlO9WDTm_DostI3SjJoNKbQ10xPD0n3OK6QHKj79-pPKKR7BfKQPhpQ8MqJbhMJtQnbW3mkjbpnDfn02OPKz0T5pKt4syPR8JfRnWn5RKfA-b4ncjRcTehoM3xI8LNj405OTbIFO0KJzJCcjqR8ZDTuBj55P; __yjs_duid=1_695635cb727c238e28cd4254a28a7a0e1627258379781; BAIDUID_BFESS=F934E08738623DF508F108DEF391CFB9:FG=1; __yjs_st=2_NDRiODllYWQzMjBiMzFhYTlmYWVjZTE4NjFkZTM5MmMwODhlZDE0MjVkYWVmMjIzMzc3MWI2Y2RlOTNkMWJkNDBhNmE2YTIyMTJlZjg0ODJiNzk0NDY2NTYxY2NkOGY5YjM5ODViMDAyZjAwY2E0MThjODUyMGM0N2JiMmEyZGEyMTA4ODdkNjViYjcwNDEwODhjNDkzNDg4YjQyMWNjYTI4ZjAzZDllYTg3YjE3ZDRiYWNlMmJkMzc3YjE1OGU5NWU4NjM3YWQxMjkwNDVkMmMyZTM1YTQ5ODgxNTA4ZjE3MDk2YTYwODg5MmY5ZTZlMmYxZGQ5ZTU1OTdkZGYxZV83X2VhYjhlOWZi; H_PS_PSSID=34300_34100_33969_34272_31254_33848_34282_26350_22158; delPer=0; PSINO=3; BA_HECTOR=002h218g2ka58g0lhq1gftcs10r; ab_sr=1.0.1_ZWRlNDJiMzk0ZWQ3YzZmYzgxMmQzOTIyZDBlN2FjZTIxNjIzODliZWE4MzZjZGEwZTBiMTIzNGRmNDhiYmM2NTJhZjI0ZjBkNTFlMjg4MWYxYmY3ZDMzMGVkNmQ1NTNhMDVkN2I1ZGViMDY2ZjBlNWJmOTk4NTBhZGIwOGU4OTg5YzNiM2QwZjVhMTFkYmQ0ODU2NTJkYzNkZmI0ZjI1MA==; PMS_JT=%28%7B%22s%22%3A1627305057015%2C%22r%22%3A%22https%3A//map.baidu.com/@11606355.22%2C4669275.88%2C5.4z%22%7D%29',
        'Referer': 'https://map.baidu.com/search/%E9%B8%BF%E6%98%9F%E5%B0%94%E5%85%8B/@11606355.22,4669275.88,5z?querytype=s&da_src=shareurl&wd=%E9%B8%BF%E6%98%9F%E5%B0%94%E5%85%8B&c=1&src=0&pn=0&sug=0&l=5&b=(6569474.192744261,1360353.0162781863;12256345.744431017,7177600.4441499)&from=webmap&biz_forward=%7B%22scaler%22:1,%22styles%22:%22pl%22%7D&seckey=cde6ebb241c3d75c675c8688828640edba33c570fc006f6ccdee864f2e95d88033fc19e794fee19c2417a6953ba260f3e91efa7e82cbc9c45b5854aec79ce924b08cce22526301f3a8c80710ebb635e73f5eccb560ee1dc38add2dfc793843279646449563fa4547850c144c3838de6fb1efaab7253aa6e99c1de56b4ddbad3905f480e4d46e5414c519465f08bedee98acac8fc7d2f84f413b041287538b09a811ee347b66a4c2c948f2ffa2f6e7674e0c5cb2b6407b610181af9064f870280fd7053482a91caa7cb762068ea41c4bb7bd2f7899f81a2ba5ab3fde28503a6fdc54b0fdee52cc2d02da76e1a4f1b4745&device_ratio=1',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4573.0 Safari/537.36'
    }

    resp = requests.get(url, headers = headers)

    if resp.status_code == requests.codes.ok:
        print(resp.json())

获取相应信息如下:

接下来我们先来获取各个省份和对应的数量,因为咱们国家除了23个省还有直辖市等,所以我们要分步获取

中国共计34个省级行政区,包括23个省、5个自治区、4个直辖市、2个特别行政区。23个省分别为:河北省、山西省、辽宁省、吉林省、黑龙江省、江苏省、浙江省、安徽省、福建省、江西省、山东省、河南省、湖北省、湖南省、广东省、海南省、四川省、贵州省、云南省、陕西省、甘肃省、青海省、台湾省。
5个自治区分别为:内蒙古自治区、广西壮族自治区、西藏自治区、宁夏回族自治区、新疆维吾尔自治区。4个直辖市分别为:北京市、天津市、上海市、重庆市。2个特别行政区分别为:香港特别行政区、澳门特别行政区。

四个直辖市所在的位置是不同于其它城市的,分布如下:

我们将获取到的信息使用熊猫保存在省份的Excel中,代码如下:

    prov = []
    value = []

    # 获取四个直辖市
    hot_city = datas.json()['hot_city']
    for i in hot_city:
        pv = i.split('|')
        if '北京市' in pv[0]:
            prov.append(pv[0])
            value.append(pv[1])

        if '上海市' in pv[0]:
            prov.append(pv[0])
            value.append(pv[1])

        if '天津市' in pv[0]:
            prov.append(pv[0])
            value.append(pv[1])

        if '重庆市' in pv[0]:
            prov.append(pv[0])
            value.append(pv[1])

    # 打印出所有省份信息
    city_list = datas.json()['more_city']
    for item in city_list:
        # 获取鸿星尔克所在省份
        province = item['province']
        prov.append(province)

        # 获取鸿星尔克所在省份的数量
        prov_num = item['num']
        value.append(prov_num)

        pd_data = pd.DataFrame({
            '省份': prov,
            '数量':  value,
        })

    pd_data.to_excel('省份.xlsx')
    ic('省份信息打印完成!')

Excel存储省份数据如下:

同样的我们可以获取各个省份内具体城市的红鸿星尔克门店数量

所有城市信息包括热门城市+更多城市 两部分组成

city = []
    value = []

    # 获取四个直辖市
    hot_city = datas.json()['hot_city']
    for i in hot_city:
        pv = i.split('|')
        if '广州市' in pv[0]:
            city.append(pv[0])
            value.append(pv[1])

        if '成都市' in pv[0]:
            city.append(pv[0])
            value.append(pv[1])

        if '南京市' in pv[0]:
            city.append(pv[0])
            value.append(pv[1])

        if '杭州市' in pv[0]:
            city.append(pv[0])
            value.append(pv[1])

        if '武汉市' in pv[0]:
            city.append(pv[0])
            value.append(pv[1])

        if '深圳市' in pv[0]:
            city.append(pv[0])
            value.append(pv[1])

    # 打印出所有城市信息
    city_list = datas.json()['more_city']

    for item in city_list:
        cities = item['city']

        for i in cities:
            # 获取鸿星尔克所在省份的市区
            cit = i['name']
            city.append(cit)
            # 获取鸿星尔克所在省份的市区对应的数量
            city_num = i['num']
            value.append(city_num)

            pd_data = pd.DataFrame({
                '城市': city,
                '数量': value,
            })

            pd_data.to_excel('城市.xlsx')

    ic('城市信息打印完成!')

Excel存储城市数据如下:

3、数据处理

我们先要使用Pandas来读取并且清洗数据

主要就是去掉省份后面的’省’字和‘自治区’等

# 读取文件
    pd_data = pd.read_excel('省份.xlsx')

    prov = pd_data['省份'].tolist()
    prov_num = pd_data['数量'].tolist()

    name = []
    for i in prov:
        if "省" in i:
            name.append(i.replace('省', ''))
        elif '内蒙古自治区' in i:
            name.append(i.replace('自治区', ''))
        else:
            name.append(i[:2])
    ic(name)
    ic(prov)

    '''
    2021-07-27 20:50:50.752477|name: ['北京','上海','天津','重庆','广东','浙江','山东','江苏','河北','安徽','湖南','四川','福建','河南','内蒙古','山西','广西','贵州','黑龙江','湖北','云南','甘肃','辽宁','陕西','江西','吉林','上海','新疆','天津','宁夏','海南','西藏','青海']
2021-07-27 20:50:50.752477|prov: ['北京市','上海市','天津市','重庆市','广东省','浙江省','山东省','江苏省','河北省','安徽省','湖南省','四川省','福建省','河南省','内蒙古自治区','山西省','广西壮族自治区','贵州省','黑龙江省','湖北省','云南省','甘肃省','辽宁省','陕西省','江西省','吉林省','上海市','新疆维吾尔自治区','天津市','宁夏回族自治区','海南省','西藏自治区','青海省']
    '''

接下来我们使用pyecharts来可视化我们清洗过后的数据

map = (
      Map()
      .add("数量分布", [list(z) for z in zip(prov, prov_num)], "china")
      .set_global_opts(
      title_opts=opts.TitleOpts(title="鸿星尔克全国门店分布图"),
      visualmap_opts=opts.VisualMapOpts(max_=500, is_piecewise=True),
      )

  )
  map.render('省份.shtml')
  ic('省份分布图绘制完毕!')

效果图如下:

省份所在的各个城市图也是同理。我们就以门店最多的广东作为案例,你也可以选择任意省份哈

抓取数据->存储数据->处理数据->可视化数据最终效果如下:

数据可视化之后一目了然,比起看Excel更加赏心悦目。并且事半功倍。

到此这篇关于用 Python 绘制全国鸿星尔克门店分布图的文章就介绍到这了,更多相关 Python 绘制全国鸿星尔克门店分布图内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python根据站点列表绘制站坐标全球分布图的示例

    根据站点列表绘制站坐标全球分布图 输入:站点列表文件.SNX全球站点坐标文件 站点列表文件示例(可手动创建): SNX全球站点坐标文件下载地址: ftp://igs.gnsswhu.cn/pub/whu/pub/gps/products/YYYY/igsyyPwwww.snx.Z 结果输出: 代码: # coding=utf-8 # !/usr/bin/env python ''' Program:plot_global_sitemap.py Function:根据站点列表绘制站坐标全球分布图

  • 使用python绘制3维正态分布图的方法

    今天使用python画了几个好玩的3D展示图,现在分享给大家. 先贴上图片 使用的python工具包为: from matplotlib import pyplot as plt import numpy as np from mpl_toolkits.mplot3d import Axes3D 在贴代码之前,有必要从整体上了解这些图是如何画出来的.可以把上面每一个3D图片理解成一个长方体.输入数据是三维的,x轴y轴和z轴.在第三个图片里面有x.y和z坐标的标识.在第三张图片中,我们可以理解为,

  • 用 Python 绘制全国鸿星尔克门店分布图

    目录 1.需求分析 2.发送请求 3.数据处理 1.需求分析 首先我们打开地图搜索“鸿星尔克”: F12打开浏览器开发者模式,找到如下链接. 复制该链接到浏览器,发现这是一个json格式的数据集.我们所需要的省份和对应数量还有各个城市对应的数量都在其中. 2.发送请求 我们首先模拟浏览器来发送请求获取到这个json数据集,然后获取各个城市鸿星尔克门店及其对应数量 . url = 'https://map.baidu.com/?newmap=1&reqflag=pcmap&biz=1&

  • 用 Python 绘制全国鸿星尔克门店分布图

    目录 1.需求分析 2.发送请求 3.数据处理 1.需求分析 首先我们打开地图搜索“鸿星尔克”: 复制该链接到浏览器,发现这是一个json格式的数据集.我们所需要的省份和对应数量还有各个城市对应的数量都在其中. 2.发送请求 我们首先模拟浏览器来发送请求获取到这个json数据集,然后获取各个城市鸿星尔克门店及其对应数量 . url = 'https://map.baidu.com/?newmap=1&reqflag=pcmap&biz=1&from=webmap&da_pa

  • Python抓新型冠状病毒肺炎疫情数据并绘制全国疫情分布的代码实例

    运行结果(2020-2-4日数据) 数据来源 news.qq.com/zt2020/page/feiyan.htm 抓包分析 日报数据格式 "chinaDayList": [{ "date": "01.13", "confirm": "41", "suspect": "0", "dead": "1", "heal&qu

  • 利用Python绘制酷炫的3D地图

    目录 1.重庆市3D地图 2.中国3D地图一 3.中国3D地图二 4.中国3D地图三 5.地球展示 之前我们介绍了很多Python地图可视化的内容,本次主要介绍如何Python绘制3D地图,还是比较神奇的,下面让我们一起一饱眼福吧! 1.重庆市3D地图 from pyecharts import options as opts from pyecharts.charts import Map3D from pyecharts.globals import ChartType # 经纬度 exam

  • Python绘制散点图之可视化神器pyecharts

    目录 散点图 什么是散点图? 散点图有什么用处? 散点图的基本构成要素 散点图模板系列 简单散点图 多维数据散点图 散点图显示分割线 散点图凸出大小(二维) 3D散点图展示 动态涟漪散点图 箭头标志散点图 散点图 什么是散点图? 散点图是指在数理统计回归分析中,数据点在直角坐标系平面上的分布图, 散点图​​表示因变量随自变量而变化的大致趋势,由此趋势可以选择合适的函数进行经验分布的拟合,进而找到变量之间的函数关系. 散点图有什么用处? 1.数据用图表来展示,显然比较直观,在工作汇报等场合能起到事

  • 用Python绘制一个仿黑洞图像

    目录 简介 单位制 观测绘图 简介 黑洞图像大家都知道,毕竟前几年刚发布的时候曾火遍全网,甚至都做成表情包了. 问题在于,凭什么认为这就是黑洞的照片,而不是一个甜甜圈啥的给整模糊了得到的呢?有什么理论依据吗? 单位制 利用einsteinpy模块中的Shadow类,可以实现黑洞吸积盘的发射强度,换言之,用理论模拟一下黑洞的照片应该是什么样子的. 22年5月份发布的是人马座A*的照片,这个"黑洞"的质量为8.26×1036kg,距离地球26673光年. 根据源码推测,einstenipy

  • 使用Python绘制图表大全总结

    在使用Python绘制图表前,我们需要先安装两个库文件numpy和matplotlib. Numpy是Python开源的数值计算扩展,可用来存储和处理大型矩阵,比Python自身数据结构要高效:matplotlib是一个Python的图像框架,使用其绘制出来的图形效果和MATLAB下绘制的图形类似. 下面我通过一些简单的代码介绍如何使用 Python绘图. 一.图形绘制 直方图 importmatplotlib.pyplotasplt importnumpyasnp mu=100 sigma=2

  • 使用python绘制常用的图表

    本文介绍如果使用python汇总常用的图表,与Excel的点选操作相比,用python绘制图表显得比较比较繁琐,尤其提现在对原始数据的处理上.但两者在绘制图表过程中的思路大致相同,Excel中能完成的工作python大多也能做到.为了更清晰的说明使用python绘制图表的过程,我们在汇总图表的代码中进行注解,说明每一行代码的具体作用.并在文章的最后给出了自定义字体和图表配色的对应表. 准备工作 import numpy as np import pandas as pd #导入图表库以进行图表绘

随机推荐