成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

全解Python的地理編碼

譯文 精選
開發 前端
對地址進行編碼是很困難的,因為它們具有非常高基數。如果你試圖用單次編碼技術來對某列進行編碼,就會導致高維度的結果,這會導致機器學習模型表現欠佳。解決問題的最簡單方法就是對列進行地理編碼。

譯者 | 崔皓

審校 | 孫淑娟

1、簡介

 大家在處理機器學習的大型數據集時,是否會遇到如下的地址欄?

圖片

上面的位置數據非?;靵y,難以處理。對地址進行編碼是很困難的,因為它們具有非常高基數。如果你試圖用單次編碼技術來對某列進行編碼,就會導致高維度的結果,這會導致機器學習模型表現欠佳。解決問題的最簡單方法就是對列進行地理編碼。

2、什么是地理編碼?

地理編碼是將地址轉換為地理坐標,這意味著將把原始地址轉化為經度/緯度的方式。

3、Python中的地理編碼

有許多不同的庫可以幫助你用Python進行地理編碼。最快的是谷歌地圖提供的API,如果有超過1000個地址需要在短時間內轉換,我推薦你使用。然而,谷歌地圖的API并不是免費的,你需要為每1000個請求支付約5美元。

谷歌地圖API的免費替代品是OpenStreetMap API。然而,OpenStreetMap API的速度比起谷歌地圖來說要慢得多,而且準確性也稍差。

在這篇文章中,我將指導你使用上述兩個API完成地理編碼過程。

4、谷歌地圖API

讓我們首先使用谷歌地圖API將地址轉換成精度/緯度。首先需要創建一個谷歌云賬戶,并輸入信用卡信息。雖然這是一項付費服務,但當你第一次創建谷歌云賬戶時,谷歌會給你200美元的免費信用。這意味著,在你被收費之前,你可以用他們的地理編碼API進行大約40,000次調用。只要你沒有達到這個限制,你的賬戶就不會被收費。

首先,在谷歌云上建立一個免費賬戶。然后,一旦你建立了一個賬戶,你就可以按照這個教程來獲得你的谷歌地圖API密鑰。

一旦你收到API密鑰,就可以開始編碼了!

(1)前提條件

在本教程中使用Zomato餐廳Kaggle數據集。確保在你的路徑中安裝了該數據集。然后,用這個命令安裝googlemaps API包。

pip install -U googlemaps

(2)讀取數據集

現在,讓我們讀取數據集并檢查數據幀的頭部。

data = pd. read_csv('zomato.csv',encoding="ISO-8859-1")
df = data.copy()
df.head()

圖片

這個數據集合有21列,9551行。

只需要針對地址列來進行地理編碼,所以去掉所有其他的列。然后,再去掉重復記錄,最后只得到地址列信息。

df = df[['地址']]
df = df. drop_duplicates()

再看一下數據框架的頭部,在處理之后就只看到地址信息了。

圖片

接下來,就可以開始地理編碼了。

(3)地理編碼

首先,用Python訪問我們的API密鑰,運行下面幾行代碼來完成這個任務。

gmaps_key = googlemaps.Client(key="your_API_key")

現在,讓我們先嘗試對一個地址進行地理編碼,并看看輸出結果。

add_1 = df['地址'][0]
g = gmaps_key. geocode(add_1)
lat = g[0]["geometry"]["location"]["lat"]
long = g[0]["geometry"]["location"]["lng"]
print('Latitude: '+str(lat)+', Longitude: '+str(long))

運行上述代碼,得到類似如下的輸出結果。

 

圖片

如果你得到上述輸出,很好!表示一切順利。我們可以針對整個數據集應用類似的處理,過程如下:

def geocode(add):
g = gmaps_key. geocode(add)
lat = g[0]["geometry"]["location"]["lat"]
lng = g[0]["geometry"]["location"]["lng"]
return(lat, lng)。
df['geocoded'] = df['Address']. apply(geocode)

再次檢查數據集合的頭部,看看代碼是否生效。

df.head()

圖片

如果輸出類似上面的截圖,恭喜你!你已經成功地對整個數據框架中的地址進行了地理編碼。

5、OpenStreetMap API

OpenStreetMap API是完全免費的,但與谷歌地圖API相比,速度較慢,精確度較低。這個API無法定位數據集中的許多地址,所以這次我們將使用地點欄來代替。在開始學習教程之前,讓我們先看看地址欄和位置欄的區別。運行下面幾行代碼來完成這個任務。

print('Address: '+data['Address'][0]+'\n\nLocality: '+data['Locality'][0] )

圖片

地址欄(Address)比地點(Locality)欄細化得多,它提供了餐廳的確切位置,包括樓層號。這可能是地址不被OpenStreetMap API識別,而地點卻被識別的原因。

讓我們對第一個Locality進行地理編碼,看看輸出結果。

地理編碼

運行以下幾行代碼。

Import url
Import requests

data = data[['Locality']]

url = 'https://nominatim.openstreetmap.org/search/' + urllib. parse. quote(df['Locality'][0]) +'?format=json'
response = requests.get(url).json()
print('Latitude: '+response[0]['lat']+', Longitude: '+response[0]['lon'] )

左右滑動查看完整代碼

上述代碼的輸出與谷歌地圖API生成的結果非常相似。

圖片

現在,讓我們創建一個函數來尋找整個數據集合的坐標。

def geocode2(locality):
url = 'https://nominatim.openstreetmap.org/search/' + urllib. parse. quote(locality) +'?format=json'
response = requests.get(url).json()
if (len(response)!=0)
return(response[0]['lat'], response[0]['lon'] )
else:
return('-1')

data['geocoded'] = data['Locality']. apply(geocode2)

很好!現在,讓我們來看看數據集合的頭部。

Data.head(15)

請注意,這個API無法為數據集合中的一些地方提供坐標。

雖然它是谷歌地圖API的免費替代品,如果用OpenStreetMap進行地理編碼,有可能會失去大量的數據。本教程到此結束!希望你從這里學到了一些新的東西,并對處理地理空間數據有了更好的理解。

原文鏈接:https://www.kdnuggets.com/2022/11/geocoding-python-complete-guide.html

譯者介紹

崔皓,51CTO社區編輯,資深架構師,擁有18年的軟件開發和架構經驗,10年分布式架構經驗。

責任編輯:武曉燕 來源: 51CTO技術棧
相關推薦

2020-10-30 08:58:33

Python列表開發

2009-09-23 17:36:26

Hibernate優點

2022-11-25 09:00:00

云計算云原生容器

2018-03-01 14:10:37

Kubernetes負載均衡容器

2010-07-14 16:21:31

Telnet服務配置

2010-07-13 14:44:11

SNMP服務設置

2010-01-04 09:39:39

Silverlight

2010-04-20 11:51:31

負載均衡

2010-09-25 13:07:50

DHCP協議結構

2011-03-30 10:07:02

Zabbix安裝

2010-07-28 22:20:10

RIP路由配置

2010-07-13 13:59:04

ICMP協議

2010-01-28 10:03:19

Android Lis

2010-04-22 18:27:37

Apache負載均衡

2010-07-21 10:06:25

FTP Telnet

2010-07-27 09:30:22

2015-11-24 10:11:17

2011-03-23 14:47:25

Nagios監控

2010-09-14 11:45:46

TFTP服務配置實驗

2009-11-11 10:21:25

路由選擇協議
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91免费版在线观看 | 欧美激情久久久 | www.日日操 | 久久精品亚洲欧美日韩久久 | 99精品一区二区 | 岛国午夜 | 久久久久久久一区 | 欧美一区成人 | 久久99精品久久久久 | 久久毛片 | 黄色毛片网站在线观看 | 国产精品成人一区二区三区夜夜夜 | 中文在线一区二区 | 一级二级三级黄色 | 精品欧美一区二区三区久久久 | 亚洲毛片在线观看 | 国产999精品久久久久久 | 亚洲成人精品 | 日本精品视频在线观看 | 亚洲一区二区三区免费在线 | 日韩精品一区二 | 亚洲免费一区 | 亚洲色图综合 | 欧美激情欧美激情在线五月 | 日日干干 | 91黄在线观看 | 一区二区三区在线免费观看视频 | 久久久亚洲一区 | 国产福利资源在线 | 久久成人国产 | 亚洲国产高清高潮精品美女 | 欧美激情免费在线 | 成人av网站在线观看 | 中文字幕高清av | 四虎在线观看 | 国产成人艳妇aa视频在线 | 欧美一区二区大片 | 黄色一级免费 | 免费在线成人网 | 成人在线视频网址 | 国产精品美女www爽爽爽 |