美文网首页
极简入门-让你的地理数据不吃灰

极简入门-让你的地理数据不吃灰

作者: liangchaofeng | 来源:发表于2019-12-28 09:54 被阅读0次

     在工作中,我们偶尔会遇到一些跟地理位置相关的数据。这种数据有时候分析起来会比较麻烦,例如将客户地址信息归纳到省,市,县等,又或者对APP用户的经纬度信息转为可识别的地理信息等。

     问题场景:需要对地址信息归纳整合,例如电商客户收货地址信息等

     解决办法:通过python的调用百度地图API接口解析数据

步骤1:准备数据

下面是我的数据格式,在我的数据中,地址字段是address,如果你希望简单一些,你可以将你的地址字段改为address,这样你就不用改任何代码了

步骤2:复制代码

你可以直接复制我的代码,在这个代码中,有一个关键key是百度地图的AK值,每日可调用30万次,可以直接用。

代码思路如下:

利用pandas读取excel或者csv数据

定义两个函数(getlnglat,transform),分别是将地址转为经纬度和将经纬度转为区域数据(国家/省份/城市/区县)

将函数返回的值插入到数据中,最好导出成excel或者csv文件

修改代码,第48行和59行是你的文件信息,一定要改成你要处理的文件信息和文件保存信息

import pandasas pd

import json

import requests

from urllib.requestimport urlopen, quote

#定义变量

url ='http://api.map.baidu.com/geocoder/v2/'

output ='json'

ak ='2nak0s2E6Dn1yXwocutHf3DuWhWsVDLQ'

def transform(i,j):#传入经纬度参数

    lat=str(i)

log=str(j)

x=lat+','+log#组合经纬度

    r = requests.get(url=url, params={'location':x,'ak':ak,'output':output})#请求

    result = r.json()

try:

country= result['result']['addressComponent']['country']

province=result['result']['addressComponent']['province']

city = result['result']['addressComponent']['city']

district=result['result']['addressComponent']['district']

except:

country='null'

        province ='null'

        city ='null'

        district ='null'

    return country,province,city,district

def getlnglat(address):

adduser_value=address[:49]#百度地图最大地址为50位

    address = quote(adduser_value)# 由于本文地址变量为中文,为防止乱码,先用quote进行编码

    uri = url +'?' +'address=' + address +'&output=' + output +'&ak=' + ak#组合请求

    req = urlopen(uri)

res = req.read().decode()

temp = json.loads(res)

#报错处理

    try:

lat = temp['result']['location']['lat']

lng = temp['result']['location']['lng']

level=temp['result']['level']

except:

lat ='null'

        lng ='null'

        level='null'

    country, province, city, district = transform(lat,lng)

return lat, lng,level,country, province, city, district

file="C:\\data\\in\\原始地址.xlsx"    #这里是的你的原始文件信息,一定要记得改

data=pd.read_excel(file)

for i,rin data.iterrows():

lat,lng,level,country, province, city, district=getlnglat(r['address'])

data.loc[i, "lat"] = lat

data.loc[i, "lng"] = lng

data.loc[i, "level"] = level

data.loc[i,"country"]=country

data.loc[i, "province"] = province

data.loc[i, "city"] = city

data.loc[i, "district"] = district

out_file="C:\\data\\out\\处理地址信息.xlsx"    #这里是的你的输出文件信息,一定要记得改

data.to_excel(out_file,index=None)

步骤3:执行代码

改完代码就可以直接执行,建议通过Anaconda+Pycharm(最好是anaconda,里面内置了众多包,如果没有的话,可以用pip install pandas 来安装包)

结果如下

通过这个代码你可以看到你的客户所处位置,以及客户的分布情况,还可以了解到客户群体的属性。

下面做了两个简单的可视化分析

客户在上海市的密度分布情况

客户群体情况

相关文章

  • 极简入门-让你的地理数据不吃灰

    在工作中,我们偶尔会遇到一些跟地理位置相关的数据。这种数据有时候分析起来会比较麻烦,例如将客户地址信息归纳到省...

  • 极简,灰

    极简主义强调功能至上,化繁为简,尽可能地摒弃多余而浮夸的修饰,让一切回归最纯粹的样子,从而到达至真、至纯、至静的境...

  • 关联规则(二)

    参考:数据挖掘入门系列教程(五)之Apriori算法Python实现Python 极简关联分析(购物篮分析) 数据...

  • 机器学习&深度学习知识体系——写过的博文(博客目录索引)

    机器学习&深度学习入门 机器学习简介 深度学习简介 深度学习入门极简教程(一) 深度学习入门极简教程(二) 深度学...

  • 在乎吗?在失去中寻找答案

    极简妻 极简优家 让极简娃在乎一个东西 必须先让他失去 不吃饭 那我便把饭拿走 如果他饿 他就会在乎从而乖乖吃 如...

  • 《极简力》读书笔记

    内心越是丰盈,生活越是素简 极简力不是让你简单地舍弃物品,而是让你重新认识生活的本质。 从生活空间极简、欲望极简、...

  • 我只是一只黑天鹅而已

    我有一本理财界小白的股票入门圣经——《极简股票课》。 是的,我称它为股票入门的圣经,因为对于不聪明的我来说,《极简...

  • 极简悦读|《极简力》

    书名:《极简力》 作者:小野 这本书不是让你简单地舍弃物品,而是让你重新认识生活的本质。从生活空间极简、欲望极简、...

  • 好书推荐《极简力》

    本书是国内“极简”生活美学的现象级图书。 不是让你扔扔扔,而是让你重新认识生活的本质。 从生活空间极简、欲望极简、...

  • 极简主义第一天

    我自愿成为极简主义者。 极简主义的第一个项目:健康 1.控制入口,严把关,不吃水以外的饮料,不吃油炸腌制食品。开始...

网友评论

      本文标题:极简入门-让你的地理数据不吃灰

      本文链接:https://www.haomeiwen.com/subject/ekmllttx.html