1. import datetime
    2. import numpy as np
    3. import pandas as pd
    1. df = pd.read_excel ("深圳市特色美食分类信息.xlsx", encoding = "utf8", sep="\t")
    2. df

    深圳特色美食数据.png

    1. dizhi = df["门店地址"]
    2. mendian = dizhi.to_list()
    3. for i in mendian:
    4. print(i)
    1. import requests
    2. def geolocation(address):
    3. url="https://restapi.amap.com/v3/geocode/geo?parameters"
    4. params={
    5. "key":"14dc3151f80e56462d23f40d60cfa779",
    6. "address":address,
    7. "city":"深圳"
    8. }
    9. r=requests.get(url,params=params)
    10. return r.json()
    1. import time
    2. import pprint
    3. from random import random
    4. 区域=list()
    5. 经纬度=list()
    6. for i in mendian:
    7. #time.sleep(3+8*random())
    8. geocode=geolocation(i)
    9. #pprint.pprint(geocode["geocodes"])
    10. if geocode["geocodes"] == []:
    11. 经纬度.append("请求经纬度失败")
    12. 区域.append("转换为区域失败")
    13. elif geocode["geocodes"][0]["district"] ==[]:
    14. 区域.append("转换为区域失败")
    15. elif geocode["geocodes"][0]["location"] ==[]:
    16. print("经纬度为空")
    17. 经纬度.append("请求经纬度失败")
    18. #pprint.pprint(geocode)
    19. # if geocode[0]==" ":
    20. # print("无法转为经纬度")
    21. else:
    22. #print(geocode["geocodes"][0]["location"])
    23. 经纬度.append(geocode["geocodes"][0]["location"])
    24. 区域.append(geocode["geocodes"][0]["district"])
    25. # #print(geocode)
    26. print(区域)
    27. 经纬度
    1. 经纬度 = df["经纬度"].str.split(',',expand=True)
    2. lon = 经纬度[0].to_list()
    3. lat = 经纬度[1].to_list()
    4. df['lon'] = lon
    5. df['lat'] = lat
    6. df["美食所属区域"] = 区域
    7. df

    美食处理后表.png

    1. # 展示深圳美食分布总览
    2. import plotly.graph_objects as go
    3. mapbox_access_token = 'pk.eyJ1IjoiYmxhY2tzaGVlcHdhbGwwMzA1IiwiYSI6ImNrMHo5ZnQxYjBjbG8zbm84b3hrb25vb24ifQ.k8toDjJDsPcjdYFTSVgTsv'
    4. fig = go.Figure(go.Scattermapbox(
    5. lon = 经纬度[0],
    6. lat = 经纬度[1],
    7. mode='markers',
    8. hovertext = df[['餐饮店名称','门店地址']],
    9. marker=go.scattermapbox.Marker(
    10. size=7
    11. ),
    12. text=df[['餐饮店名称','门店地址']],
    13. ))
    14. fig.update_layout(mapbox_style="open-street-map")
    15. fig.update_layout(
    16. title='深圳市美食分布散点图',
    17. hovermode='closest',
    18. mapbox=dict(
    19. accesstoken=mapbox_access_token,
    20. bearing=0,
    21. center=go.layout.mapbox.Center(
    22. lat=22.538629,
    23. lon=113.993073
    24. ),
    25. pitch=0,
    26. zoom=8
    27. )
    28. )
    29. fig.show()
    30. py.plot(fig,filename='门店地图.html')

    深圳美食分布散点图.png

    1. df = pd.read_excel ("不同区域美食数量.xlsx", encoding = "utf8", sep="\t")
    2. df

    深圳特色美食气泡图.png

    1. # 展示深圳各区美食分布
    2. import plotly.express as px
    3. import plotly.offline as py
    4. mapbox_access_token = 'pk.eyJ1IjoiYmxhY2tzaGVlcHdhbGwwMzA1IiwiYSI6ImNrMHo5ZnQxYjBjbG8zbm84b3hrb25vb24ifQ.k8toDjJDsPcjdYFTSVgTsv'
    5. df = df
    6. fig = px.scatter_mapbox(df, lat="lat", lon="lon",color="区域", size="数量",
    7. color_continuous_scale=px.colors.cyclical.IceFire, size_max=35, zoom=10)
    8. fig.update_layout(mapbox_style="stamen-toner")
    9. py.plot(fig,filename='深圳市特色美食各区分布数量卫星气泡图.html')
    10. fig.show()

    美食卫星气泡图.png
    门店地图.html深圳市特色美食分布卫星气泡图.html