一、创建地理编码API Key
为了让Python能够把地址转换为经纬度坐标,我们需要用到高德地图的API Key。
打开高德开放平台,先注册,然后点击控制台。
点击应用管理下的我的应用,点击创建新应用或新建一个应用。
起个应用名称,(随便)选择应用类型。
再给Key起个名称,选择服务平台里的Web服务,因为这里面有我们需要的地理编码API,勾选同意提交。
我们得到了一个Key,之后获得的服务全靠它。
二、官方服务示例
我们在主页点击开发支持下的Web服务 API。
点击左侧的地理/逆地理编码,地理编码是从地址到经纬度的转换,逆地理编码是从经纬度到地址的转换,我们这次使用前者。
往下拉,使用说明中提到返回数据是JSON或XML格式(可选),requests 的请求方式是GET,请记住这两点。
再往下拉,服务示例下面有个语句,我们把它拷贝到Jupyter Notebook中。
把output数据返回格式改为JSON,把你的Key替换到等号后面。
把修改过的网址在浏览器中打开,JSON格式类似于嵌套的字典格式;你自己可以尝试用XML格式返回看下是啥样的。
我们用JSON在线解析把刚才网页显示的内容粘贴进去,右边以格式化层级的方式显示出来,我们需要的坐标信息就包含在location字段里。
导入requests和json库文件。
创建一个函数get_data,以地址address为参数;通过服务网址url获取get网页源代码并转换为json格式;如果geocodes存在且长度不等于零,把省province、市city、区district和经纬度坐标值location赋值给字典里相应的键名;返回字典格式dic。
我们还用示例中的地址作为参数调用,返回包含了省province(直辖市或自治区)、市city、区district和经纬度坐标值location的字典格式。
三、上市公司办公地址转换
导入pandas库文件,读取昨天转换的excel文件。
把办公地址当作参数调用get_data函数,把返回的结果赋值给新建的一列info中。耗时十几分钟,毕竟3553条呢!
新建info列放在了最后面。
输出第一条的info列,就是如上图所示。
我们创建四个小函数,分别判断省份、城市、区和经纬度坐标值是否存在,如果存在就把返回的值存为对应的新的列。
把info列作为参数调用这四个小函数。
执行完后,df新增加了四列。
df有十几列数据,不是我们这次都需要的,我们把其中经纬度坐标值location、股票名称StockName、省份province、城市city和区district提取出来赋给一个新的变量。
新的DataFrame结构数据。
结尾
至此,我们用Python把经纬度坐标值和股票名称一一对应了起来,下一篇在此基础上进行坐标的转换和数据的筛选。
Jupyter Notebook代码截图
最后一条忘写注释了,请自己加上。