你知道海底捞在全国有多少家店吗? | 您所在的位置:网站首页 › 华为手机连锁店全国有多少家店铺 › 你知道海底捞在全国有多少家店吗? |
来源:可以叫我才哥 前段时间小团建去吃了海底捞,最近又看新闻说海底捞要关闭300家店,300家店是什么概念呢?那让我们先来看看海底捞全国有多少家店吧! 目录: 1. 数据采集 2. 地图绘制 2.1. 坐标转换 2.2. 地图绘制 3. 店面分布 1. 数据采集 直接打开海底捞官网,拖到首页最下面我们可以看到全球各国家与地区门店选择,点击中国即可进入到中国门店列表,在开发者模式找到源数据地址。 ![]() 可以看到请求到的数据格式很整洁,我们可以非常方便的处理,看代码: import requests import pandas as pd # 接口地址 url = 'https://www.haidilao.com/eportal/store/listObjByPosition?country=CN&language=zh' # 请求头 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36", "accept": "application/json, text/plain, */*" } r = requests.get(url, headers=headers) # 门店数据信息 data = r.json() # 转化为DataFrame类型 df = pd.DataFrame(data['value']) # 存储本地 df.to_excel('海底捞.xlsx',index=False)数据预览: ![]() 一共1404家门店 2. 地图绘制 在采集到的数据中我们可以看到有经纬度坐标(百度地图),这里我的目标是将店地址绘制到地图上,采用的是folium绘图库。由于这个库没有百度地图,有高德地图,因此我需要先将经纬度坐标从百度转为高德,再进行地图绘制。 2.1. 坐标转换在高迪开平找到坐标转换的接口,然后直接转换即可。 https://lbs.amap.com/api/webservice/guide/api/convert ![]() 输出结果: ![]() 基于经纬度坐标点+店铺名称数据用于绘制,代码如下: from folium import plugins import folium m = folium.Map([39.904989, 116.405285], # 北京中心区域经纬度 zoom_start=10, tiles='http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}', # 高德街道图 # tiles='https://mt.google.com/vt/lyrs=h&x={x}&y={y}&z={z}', # google 地图 # tiles='Stamen Toner', attr='高德') # 绘制店标记 groups = folium.FeatureGroup('') for l,label in zip(ss1,df['storeName'].to_list()): groups.add_child( folium.CircleMarker( location=l, radius=7, color='yellow', fill=True, fill_color='red', fill_opacity=0.4, popup=folium.Popup(html=label,max_width=100), ) ) m.add_child(groups) m.add_child(folium.LatLngPopup()) # 区域密度 marker_cluster = plugins.MarkerCluster().add_to(m) for l,label in zip(ss1,df['storeName'].to_list()): # 添加marker到地图 folium.Marker( location = l, icon=None, # popup=folium.Popup(html=label,max_width=100), ).add_to(marker_cluster) m.add_child(marker_cluster) m.save('海底捞.html') # 将结果以HTML形式保存到本地输出结果对比: 左侧是绘制的,右侧是官网的 ![]() 3. 店面分布 同样的,在高德地图开放平台也有经纬度坐标转化位置信息的接口,我们通过店铺经纬度信息找到其所在省市(原始数据中地址信息格式不统一,比较难解析)。 citys = [] provinces = [] for i , location in enumerate(df[['longitude','latitude']].values): location = str(location[0])+','+str(location[1]) url = 'https://restapi.amap.com/v3/geocode/regeo?' params = { 'location':location, 'key':'4e3f878e4f74ad3b522d10830e54cfa2', 'extensions':'base', 'batch':'false', 'roadlevel':0, } r = requests.get(url, params=params) data = r.json()['regeocode'] city = data['addressComponent']['city'] province = data['addressComponent']['province'] if len(city)==0: city = province citys.append(city) provinces.append(province) print(f'\r{i+1}',end='') df['城市'] = citys获取城市信息后,就可以直接分组统计不同城市的海底捞店铺数了。 df.groupby('城市')['storeId'].nunique().sort_values(ascending=False).head(10) 城市店铺数上海市81北京市78深圳市52西安市52广州市47武汉市42郑州市41杭州市40成都市33南京市32海底捞在全国242个城市有店面,其中在营店面数最多的城市是上海共81家店,其次是北京有78家店。 from pyecharts import options as opts from pyecharts.charts import Map from pyecharts.faker import Faker from pyecharts.globals import CurrentConfig, NotebookType CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB df = pd.read_clipboard() c = ( Map() .add("海底捞店面数", [list(z) for z in zip(df.省, df.数量)], "china") .set_global_opts( title_opts=opts.TitleOpts(title="海底捞全国各省店面数分布"), visualmap_opts=opts.VisualMapOpts(max_=200), ) ) c.load_javascript() c.render_notebook()![]() 也可以用Excel的EasyShu插件进行绘制,效果如下: ![]() 咱们今天就简单介绍到这里吧! -------- End -------- ![]() 回复关键词,获取对应的资料: 关键词资料名称600《Python知识手册》md《Markdown速查表》time《Python时间使用指南》str《Python字符串速查表》pip《Python:Pip速查表》style《Pandas表格样式配置指南》mat《Matplotlib入门100个案例》px《Plotly Express可视化指南》 精选视频可视化: Plotly Express 财经: Plotly在投资领域的应用 | 绘制K线图表 排序算法: 冒泡排序 | 选择排序 | 快速排序 | 归并排序 | 堆排序 | 插入排序 | 希尔排序 | 计数排序 | 桶排序 ![]() |
CopyRight 2018-2019 实验室设备网 版权所有 |