在很多数据处理任务、机器学习比赛中,数据集常常含有经纬度数据。虽然经纬度是连续变量很好处理,但是经纬度的上升、下降和数据逻辑的关系并不是线性的,很多时候我们转化成城市、省份等类别信息能够进一步探究数据的分布。<br>mapping to city有很多方法,常用的一种是用google map的API,返回text型的结果(这里说text型不太严谨)。<br>如果只是查询一次地址,可以在python里,调用urllib包,直接使用google map的url,load json等步骤不再详细描述,因为这是一个大坑。因为直接调用google map url而没有验证(credentials)的话,google map 会查封这个api,开始时候允许几次,如果调用多了就一次也不允许了。<br>Anyway,重点是要有一个key。步骤如下:<br>1在google api service登陆你的google账户。https://console.cloud.google.com/apis<br>2选择map service,提示建立project名字,然后进入project 页面,左边第三行有个credentials,见下图。点击后,根据提示生成一个key,复制这个key<br>3在python里import google map所需要的包,然后用你的key建立一个接口,然后输入一系列经纬度数据即可。代码如下<br>import googlemaps<br>def getplace(latlist, longlist):#经纬度的list<br>townlist=[]<br>dic=dict(zip(latlist,longlist))<br>gmaps = googlemaps.Client(key='你的key粘贴在这')<br>for lat,lon in dic.items():<br>result = gmaps.reverse_geocode((lat, lon))<br>components = result[0]['address_components']<br>country = town = None<br>for c in components:<br>if "country" in c['types']:<br>country = c['long_na