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. binguan = df["宾馆酒店名称"]
    2. binguanjiudian = binguan.to_list()
    3. for i in binguanjiudian:
    4. print(i)
    1. 深圳美境假日精品客栈
    2. 深圳大鹏较场尾壹月客栈
    3. 深圳小梅沙奢华海景别墅
    4. 深圳瓜villa海景度假别墅
    5. 爱情公寓(深圳古城店)
    6. 深圳随心民宿
    7. 深圳桔钓沙莱华度假酒店
    8. 深圳舒静阁别墅
    9. 深圳曦城别墅
    10. 深圳南澳世纪海景别墅
    11. 深圳东部华侨城瀑布酒店
    12. 深圳西涌(西冲)三人行客栈
    13. 深圳西冲米兰花开客栈(原舍下客栈)
    14. 深圳尚绿居民宿
    15. 深圳五洲宾馆
    16. 深圳寒之落民宿(原海语民宿)
    17. ...
    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 binguanjiudian:
    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. ['114.509457,22.588540',
    2. '114.122263,22.559907',
    3. '113.929882,22.540629',
    4. '113.980500,22.587347',
    5. '114.021658,22.624935',
    6. ...]
    7. '盐田区', '福田区', '南山区', '龙岗区', '福田区', '龙岗区', '罗湖区', '福田区'
    1. loc = 经纬度
    2. 经纬度 = loc[0].str.split(',',expand=True)
    3. 经度 = 经纬度[0]
    4. 维度 = 经纬度[1]
    5. df["酒店所属区域"] = 区域
    6. df["经度"] = 经度
    7. df["维度"] = 维度
    8. df

    深圳酒店数据图表2.png

    1. # 深圳市酒店分布情况地图概览
    2. import plotly.graph_objects as go
    3. mapbox_access_token = 'pk.eyJ1IjoiYmxhY2tzaGVlcHdhbGwwMzA1IiwiYSI6ImNrMHo5ZnQxYjBjbG8zbm84b3hrb25vb24ifQ.k8toDjJDsPcjdYFTSVgTsv'
    4. fig = go.Figudfre(go.Scattermapbox(
    5. lon = df[lon],
    6. lat = df[lat],
    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.483767,
    23. lon=114.549601
    24. ),
    25. pitch=0,
    26. zoom=8
    27. )
    28. )
    29. fig.show()

    深圳酒店分布散点图.png

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

    深圳各区酒店情况.png

    1. # 深圳各区域酒店数量分布地图
    2. # 深圳各区域有多少酒店清晰可见
    3. import plotly.graph_objects as go
    4. import pandas as pd
    5. mymap = go.Densitymapbox(lat=df['lat'],lon=df['lon'],z=df['数量'],radius=40)
    6. fig = go.Figure(mymap)
    7. fig.update_layout(mapbox_style="open-street-map")
    8. fig.show()

    深圳酒店热力图.png

    1. # 深圳市酒店价格卫星散点气泡地图
    2. # 把酒店价格展示在地图上
    3. import plotly.express as px
    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=15, zoom=10)
    8. fig.update_layout(mapbox_style="stamen-terrain")
    9. fig.show()

    卫星酒店气泡图.png
    酒店地图.html
    区域酒店数量热力地图.html
    深圳市酒店卫星散点气泡图.html