用Python評(píng)測(cè)三種批量查詢經(jīng)緯度的方法,你pick哪一種?


一、騰訊地圖

1、構(gòu)造函數(shù)
import requests
def tengxun(addr):
url = "https://apis.map.qq.com/jsapi?" #騰訊地圖API接口
para = {
"qt": "geoc",
"addr":addr, #傳入地址參數(shù)
"output": "json",
"key": "D7EBZ-NHYKX-UAH4A-74TW4-6M2JE-UHFLY", #即騰訊地圖API的key
"pf":"jsapi",
"ref":"jsapi"
}
req = requests.get(url,para) #請(qǐng)求數(shù)據(jù)
req = req.json() #轉(zhuǎn)為json格式
#print(req)
m = req["detail"]
g = f"{m['pointx']},{m['pointy']}" #解析到經(jīng)緯度數(shù)據(jù)
print(g)
return g
tengxun(addr="深圳市")
'113.883080,22.553290'
2、讀取數(shù)據(jù)
import pandas as pd
df1 = pd.read_excel("gz_school.xlsx")
df1.head()

import time
time_start = time.time() #程序起始時(shí)間
df1['經(jīng)緯度']=df1['address'].apply(tengxun) #調(diào)用函數(shù)
time_end = time.time() #程序結(jié)束時(shí)間
t = time_end-time_start #運(yùn)行時(shí)間
print('共用時(shí)%s秒'%t)
共用時(shí)52.39904499053955秒
4、保存數(shù)據(jù)
df1.head()
df1.to_excel('result.xlsx',index = False)

二、高德地圖

1、構(gòu)造函數(shù)
import pandas as pd
import requests
import time
import csv
import json
def gaode(addr):
para = {
'key':'你自己的', #高德地圖開放平臺(tái)申請(qǐng)的key
'address':addr #傳入地址參數(shù)
}
url = 'https://restapi.amap.com/v3/geocode/geo?' #高德地圖API接口
req = requests.get(url,para)
req = req.json()
print('-' * 30)
m = req['geocodes'][0]['location']
print(m)
return m
gaode(addr="深圳")
2、應(yīng)用函數(shù)
df2 = pd.read_excel('gz_school.xlsx') #讀取地址數(shù)據(jù)
time_start = time.time()
df2['經(jīng)緯度'] = df2['address'].apply(gaode) #調(diào)用函數(shù)
time_end = time.time()
t = time_end-time_start
print('共用時(shí)%s秒'%t)
共用時(shí)37.740272998809814秒
三、百度地圖

1、構(gòu)造函數(shù)
import pandas as pd
import requests
import time
import csv
import json
def baidu(addr):
url = "http://api.map.baidu.com/geocoding/v3/?" #百度地圖API接口
para = {
"address": addr, #傳入地址參數(shù)
"output": "json",
"ak": "你自己的" #百度地圖開放平臺(tái)申請(qǐng)ak
}
req = requests.get(url,para)
req = req.json()
#print(req)
print('-' * 30)
m = req["result"]["location"]
g = f"{m['lng']},{m['lat']}"
print(g)
return g
baidu(addr="深圳")
2、應(yīng)用函數(shù)
df3 = pd.read_excel('gz_school.xlsx')
time_start = time.time()
df3['經(jīng)緯度'] = df3['address'].apply(baidu)
time_end = time.time()
t = time_end-time_start
print('共用時(shí)%s秒'%t)
共用時(shí)24.0550799369812秒
四、小結(jié)

由于微信平臺(tái)算法改版,公號(hào)內(nèi)容將不再以時(shí)間排序展示,如果大家想第一時(shí)間看到我們的推送,強(qiáng)烈建議星標(biāo)我們和給我們多點(diǎn)點(diǎn)【在看】。星標(biāo)具體步驟為:
(1)點(diǎn)擊頁(yè)面最上方“小詹學(xué)Python”,進(jìn)入公眾號(hào)主頁(yè)。
(2)點(diǎn)擊右上角的小點(diǎn)點(diǎn),在彈出頁(yè)面點(diǎn)擊“設(shè)為星標(biāo)”,就可以啦。
感謝支持,比心。
評(píng)論
圖片
表情
