ITPub博客

首页 > 数据库 > 数据库开发技术 > 应用transform函数从公司名称中识别出省市区信息

应用transform函数从公司名称中识别出省市区信息

原创 数据库开发技术 作者:阿黎逸阳的代码 时间:2023-11-04 17:05:00 0 删除 编辑

从字符串中识别出省市区的信息分别存储,是我们经常会碰到的问题。

如果用分词的方法去匹配获取比较麻烦,cpca包提供了便捷的调用函数transform。

只要把含省市区的信息放进去,即可返回标准的含省市区的数据框。

本文详细阐述如何安装cpca包、transform函数参数定义,以及如何调用transform函数实现省市区信息获取。

本文目录
  1. 安装cpca包

  2. transform参数详解

  3. transform调用案例详解

    3.1 transform函数默认参数识别字符串中地址

    3.2 改变transform函数参数识别字符串中地址

    3.3 批量识别字符串中的省市区并导出最终数据


一、安装cpca包

要想使用transform函数,首先需要安装cpca包。具体代码如下:

pip install cpca
有些人直接用以上代码即可安装成功,我安装时报错如下:

网上找了下方法,
建议一:先安装Visual C++ 14.0或VC tools工具包,再执行上面的安装语句。
建议二:安装对应的whl文件。
建议三:
step1:在cmd中先运行 conda config --add channels conda-forgestep2:再运行 conda install pyahocorasickstep3:最后运行pip install cpca
大部分的文章都是建议一的做法,但是我不想安装vc,感觉比较麻烦,就从最简单的方法去尝试。
先按建议三的方法去执行,想着不行再去找对应的whl,如果还不行就安装vc。
没想到我的电脑按建议三的方法执行就安装成功了。
结果如下:


二、transform参数详解
接着写循环统计每个文件中指定词出现的次数,具体代码如下:
transform(location_strs, index=None, pos_sensitive=False, umap={})

参数详解:

locations_strs:地址描述字符集合,可以是list, Series等任意可以进行for in循环的集合。比如:["徐汇区虹漕路461号58号楼5楼", "泉州市洛江区万安塘西工业区"]。
index:可以通过这个参数指定输出的DataFrame的index,默认情况下是range(len(data))。
pos_sensitive:默认值False,如果为True则会多返回三列,分别提取出的省市区在字符串中的位置,如果字符串中不存在的话则显示-1。
umap:当只有区的信息时, 且该区存在同名时, 指定该区具体是哪一个,字典的 key为区名,value为 adcode, 比如 {"朝阳区": "110105"}。

三、transform调用案例

 1   用transform函数默认参数识别字符串中地址

首先调用transform函数,用默认参数识别字符串中的地址,具体代码如下:

import cpca
cpca.transform(["徐汇区虹漕路461号58号楼5楼", "泉州市洛江区万安塘西工业区", '天津市国土资源局'])

得到结果:

可以发现如果地址中只有区,会自动补全前面的省和市。

其中adcode表示地址对应的行政编码。


 2   改变transform函数参数识别字符串中的地址

接着调整pos_sensitive参数的值识别地址,展示对应的省市区在字符串中的位置,具体代码如下:

cpca.transform(["徐汇区虹漕路461号58号楼5楼", "泉州市洛江区万安塘西工业区", '天津市国土资源局'], pos_sensitive=True)

得到结果:

可以发现省_pos、市_pos、区_pos的值对应了省市区在字符串中的位置,如果字符串中不存在的话则显示-1。


 3   批量识别字符串中的省市区并导出最终数据

最后,读取本地数据,识别供应商名称中的省市区,具体代码如下:

import osimport cpcaimport pandas as pd  #导入数据处理的库import numpy as np   #导入数据处理的库
os.chdir(r'F:\公众号\85_公司名称中提取省市区') #存储数据的路径,需替换成你电脑存储路径data = pd.read_excel('date.xlsx', sheet_name='Sheet1')#读取数据place_list=[]for i in data['供应商名称']: #构造公司地址list place_list.append(i)all_integrity_place = cpca.transform(place_list)#识别出公司名称中的省市区all_integrity_place['供应商名称'] = data['供应商名称']#添加供应商名称列all_integrity_place

其中data数据形式如下:

运行代码得到结果:

导出数据:
all_integrity_place.to_csv('result.csv')#导出数据

至此,Python中调用transform函数识别省市区已讲解完毕,对学习python感兴趣的同学可以翻看公众号中“学习Python”模块相关文章。

【部分群限时免费进】分群讨论学习Python、玩转Python、风控建模【29.9元进】、人工智能、数据分析相关问题,还提供招聘内推信息、优秀文章、学习视频、公众号文章答疑,也可交流工作中遇到的难题。如需添加微信号19967879837,加时备注想进的群,比如学习Python。

往期回顾:

一文囊括Python中的函数,持续更新。。。

一文囊括Python中的有趣案例,持续更新。。。

一文囊括Python中的数据分析与绘图,持续更新。。。

一文囊括风控模型搭建(原理+Python实现),持续更新。。。



限时免费进群

19967879837

添加微信号、手机号

原文作者:阿黎逸阳的代码;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2020-02-15

  • 博文量
    282
  • 访问量
    130879