python从地址提取省市区实例_一个用于提取简体中文字符串中省,市和区并能够进行映射,检验和简单绘图的python模块...

简介

一个用于提取简体中文字符串中省,市和区并能够进行映射,检验和简单绘图的python模块。

举个例子:

["徐汇区虹漕路461号58号楼5楼", "泉州市洛江区万安塘西工业区"]

↓ 转换

|省 |市 |区 |地址 |

|上海市|上海市|徐汇区|虹漕路461号58号楼5楼 |

|福建省|泉州市|洛江区|万安塘西工业区 |

注:“地址”列代表去除了省市区之后的具体地址

安装说明

代码目前仅仅支持python3

pip install cpca

注:cpca是chinese province city area的缩写

常见安装错误:

​ 有的朋友在我的博客中反映他们在使用的时候会报如下错误:

ModuleNotFoundError: No module named 'jieba'

​ 可能是因为某种原因,依赖未能成功的安装上去,这个时候则需要手动使用pip install jieba命令进行安装。

如果觉得本模块对你有用的话,施舍个star,谢谢。

中国三级行政区划分(参考自百度百科)

行政区级别

一级行政区(省级行政区)

34个(23个省、5个自治区、4个直辖市、2个特别行政区)

二级行政区(地级行政区)

334个(294个地级市、7个地区、30个自治州、3个盟)

三级行政区(县级行政区)

2876个(987个市辖区、363个县级市、1355个县、117自治县、49个旗、3个自治旗、1个特区、1个林区)

特点

基于jieba分词进行匹配,同时加入了一些额外的校验匹配逻辑

因为jieba分词本身有时候会分错,所以引入了全文匹配的模式,这种模式下能够提高准确率,但会导致性能降低,关于如何开启这个模式见下面的使用文档或者 issue #11

如果地址数据比较脏的,不能指望依靠这个模块达到100%的准确,本模块只能保证尽可能地提取信息,如果想要达到100%准确率的话,最好在匹配完后再人工核验一下

自带完整的省,市,区三级地名及其经纬度的数据

支持自定义省,市,区映射

输出的是基于pandas的DataFrame类型的表结构,易于理解和使用

封装了简单的绘图功能,可以很方便地进行简单的数据可视化

MIT 授权协议

Get Started

分词模式:

本模块中最主要的方法是cpca.transform,该方法可以输入任意的可迭代类型(如list,pandas的Series类型等),然后将其转换为一个DataFrame,下面演示一个最为简单的使用方法:

location_str = ["徐汇区虹漕路461号58号楼5楼", "泉州市洛江区万安塘西工业区", "朝阳区北苑华贸城"]

from cpca import *

df = transform(location_str)

df

输出的结果为:

区 市 省 地址

0 徐汇区 上海市 上海市 虹漕路461号58号楼5楼

1 洛江区 泉州市 福建省 万安塘西工业区

2 朝阳区 北京市 北京市 北苑华贸城

注:程序输出的df是一个Pandas的DataFrame类型变量,DataFrame可以非常轻易地转化为csv或者excel文件,如果你对DataFrame不熟悉的话,可以参考Pandas的官方文档:http://pandas.pydata.org/pandas-docs/version/0.20/dsintro.html#dataframe

,或者往下翻到"示例与测试用例"大标题,那里我也展示了DataFrame的拼接与转换成csv文件的操作。

默认情况下transform方法的cut参数为True,即采用分词匹配的方式,这种方式速度比较快,但是准确率可能会比较低,如果追求准确率而不追求速度的话,建议将cut设为False(全文模式),具体见下一小节。

尝试着对代码稍加修改(其实就是将transform方法的umap参数置为空字典):

location_str = ["徐汇区虹漕路461号58号楼5楼", "泉州市洛江区万安塘西工业区", "朝阳区北苑华贸城"]

from cpca import *

df = transform(location_str, umap={}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值