数据清洗(添加省市区)

Posted birdmmxx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据清洗(添加省市区)相关的知识,希望对你有一定的参考价值。

利用python为地名匹配省市区,

设计思想:利用百度api实现定位经纬度,然后再通过经纬度匹配省市区

 

1.从文本中读取地点名称

#提取地区
def diqu():
    f = codecs.open(kjcg.txt, mode=r, encoding=utf-8)  # 打开txt文件,以‘utf-8’编码读取
    line = f.readline()   # 以行的形式进行读取文件
    while line:
        a = line.split()
        b = a[0:1]   # 这是选取需要读取的位数
        list.append(b)  # 将其添加在列表之中
        line = f.readline()
    f.close()

 

2.调用百度api实现  地点------经纬度

#提取经纬度
def geocodeB(address):
    """
    @ address: 名称字符串
    @ 返回值:经度,纬度
    """
    base_url = "http://api.map.baidu.com/geocoder?address={address}&output=json&key=您的密钥".format(address=address)

    response = requests.get(base_url)
    answer = response.json()
    latitude = answer[result][location][lng] #
    longitude = answer[result][location][lat] #

    list_lag.append(latitude)
    list_lng.append(longitude)

 

3.同样利用百度api   经纬度-------省市区

#提取省,市,区
#基于百度地图API下的经纬度信息来解析地理位置信息

def getlocation(lat,lng):

    url = requests.get(http://api.map.baidu.com/geocoder?location= + lat + , + lng + &output=json&key=您的密钥)
    result = url.json()
    #print(result)
    city = result[result][addressComponent][city]
    province = result[result][addressComponent][province]
    district = result[result][addressComponent][district]
    # print(city,province,district)
    list_all= [
        
 + result[result][addressComponent][city] + , +
        result[result][addressComponent][province] + , +
        result[result][addressComponent][district]]

    print(list_all)

 

4.数据存储(将list转换为字符串存储到文本文件中)

res_all = ,.join(list_all)
    with open(科技成果地区划分.txt, a+, encoding="utf-8") as f:
        f.write(res_all)

 

效果展示:(待转换数据------转换数据)(但是不知道为什么通过api双向转换出来的数据有些对不上)

比如 天津科技大学:天津市河西区大沽南路1038号 

但是通过百度api实现出来的就是北京

技术图片

 

 

技术图片

 

以上是关于数据清洗(添加省市区)的主要内容,如果未能解决你的问题,请参考以下文章

数据挖掘中数据清洗的方法

c# 做省市县联动

element 级联选择器 省市区动态获取

如何在Django Admin后台添加一个省市二级联动下拉列表

省市添加字母索引web-view

Python数据清洗——Pandas