python中cpca库用法详解(从文本中提取省市区)

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

首先安装cpca库:

pip install cpca

Github:

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

 基本使用

        cpca.transform()方法可以输入任意的可迭代类型(如list,pandas的Series类型等),然后将其转换为一个DataFrame。

示例代码:

import cpca

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

运行结果:

如果想获知程序是从字符串的哪个位置提取出省市区名的,可以添加一个pos_sensitive=True参数

示例代码:

import cpca

location_str = ["徐汇区虹漕路461号58号楼5楼", "泉州市洛江区万安塘西工业区", "北京朝阳区北苑华贸城"]
df = cpca.transform(location_str, pos_sensitive=True)
print(df)

运行结果:

        其中省_pos,市_pos和区_pos三列大于-1的部分就代表提取的位置。-1则表明这个字段是靠程序推断出来的,或者没能提取出来。 

中国的区级行政单位非常的多,经常有重名的情况,比如“北京市朝阳区”和“吉林省长春市朝阳区”,当有上级地址信息的时候,cpca 能够根据上级地址 推断出这是哪个区,但是如果没有上级地址信息,单纯只有一个区名的时候, cpca 就没法推断了,只能随便选一个了, 通过 umap 参数你可以指定这种情况下该选择哪一个。

示例代码:

import cpca

location_str = ["朝阳区汉庭酒店大山子店"]
df = cpca.transform(location_str, pos_sensitive=True)
print(df)

df = cpca.transform(location_str, pos_sensitive=True, umap={"朝阳区": "110105"})
print(df)

运行结果:

其中:umap 字典的 key 是区名,value 是区的 adcode。具体的 adcode 可以去 全国行政区划查询平台 上查询:全国行政区划信息查询平台

转化为列表list

1.转换单一地址

示例代码:

import cpca

location_str = ["北京朝阳区汉庭酒店大山子店"]
ret = cpca.transform(location_str).values.tolist()[0]
print(ret)

运行结果:

2.转换多个地址

示例代码:

import cpca

location_str = "北京朝阳区汉庭酒店大山子店和吉林省朝阳区汉庭酒店大山子店以及北京朝阳区北苑华贸城"
ret = cpca.transform_text_with_addrs(location_str)  # 注意 transform_text_with_addrs 获得的数据,“地址”列都是空的
print(ret)

运行结果:

地图绘制

模块中自带一些简单绘图工具,可以在地图上将上面输出的数据以热力图的形式画出来。

这个工具依赖folium,在使用之前需要先安装folium库:

pip install folium

示例代码:

import cpca
from cpca import drawer

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

drawer.draw_locations(df[cpca._ADCODE], "df.html")

运行结果:

        上述代码运行结束后会在运行代码的当前目录下生成一个df.html文件,用浏览器打开即可看到绘制好的地图(如果某条数据’省’,'市’或’区’字段有缺,则会忽略该条数据不进行绘制),速度会比较慢,需要耐心等待,绘制的图像如下:

关于cpca库更多使用方法,详见上述提到的Github链接。

  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值