(数据科学学习手札131)pandas中的常用字符串处理方法总结
本文示例代码及文件已上传至我的
Github仓库https://github.com/CNFeffery/DataScienceStudyNotes
1 简介
在日常开展数据分析的过程中,我们经常需要对字符串类型数据进行处理,此类过程往往都比较繁琐,而pandas作为表格数据分析利器,其内置的基于Series.str访问器的诸多针对字符串进行处理的方法,以及一些top-level级的内置函数,则可以帮助我们大大提升字符串型数据处理的效率。
本文我就将带大家学习pandas中常用的一些高效字符串处理方法,提升日常数据处理分析效率:
2 pandas常用字符串处理方法
pandas中的常用字符串处理方法,可分为以下几类:
2.1 拼接合成类方法
这一类方法主要是基于原有的Series数据,按照一定的规则,利用拼接或映射等方法合成出新的Series,主要有:
2.1.1 利用join()方法按照指定连接符进行字符串连接
当原有的Series中每个元素均为列表,且列表中元素均为字符串时,就可以利用str.join()来将每个列表按照指定的连接符进行连接,主要参数有:
- sep: str型,必选,用于设置连接符
它除了可以简化我们常规使用apply()配合'连接符'.join(列表)`实现的等价过程之外,还可以在列表中包含非字符型元素时自动跳过此次拼接返回缺失值,譬如下面的例子:
s = pd.Series([
['a', 'b', 'c'],
[1, 'a', 'b'],
list('pandas')
])
s.str.join('-')

2.1.2 利用cat()方法进行字符串拼接
当需要对整个序列进行拼接,或者将多个序列按位置进行元素级拼接时,就可以使用str.cat()方法来加速这个过程,其主要参数有:
- others: 序列型,可选,用于传入待进行按位置元素级拼接的字符串序列对象
- sep: str型,可选,用于设置连接符,默认为
'' - na_rep: str型,可选,用于设置对缺失值的替换值,默认为
None时:- 当
others参数未设置时,返回的拼接结果中缺失项自动跳过 - 当
others参数设置时,两边的序列对应位置上存在缺失值时,拼接结果对应位置返回缺失值
- 当
下面是一些简单的例子:

2.2 判断类方法
判断类方法在这里指的是针对字符型Series,按照一定的条件判断从而返回与原序列等长的bool型序列,可进一步辅助数据筛选等操作,在pandas中此类字符串处理方法主要有:
2.2.1 利用startswith()与endswith()匹配字符串首尾
当我们需要判断字符型Series中的每个元素是否以某段字符片段开头或结尾时,就可以使用到startswith()/endswith(),它们的参数一致:
- pat: str型,用于定义要检查的字符片段
- na: 任意对象,当对应位置元素为空值时,用于自定义该位置返回判断结果,默认为
NaN,会原值返回,通常建议设置为False
下面是一些简单的例子:

2.2.2 利用contains()判断是否包含指定模式
当我们想要判断字符型Series中每个元素,是否包含指定的字符片段或正则模式时,则可以使用到str.contains()方法,其主要参数有:
- pat: str型,必选,用于定义要检查的字符模式,当
regex=True时表示正则表达式,当regex=False时,表示原始字符串片段 - flags: int型,可选,对应
re模块中的flags参数,用于配合正则表达式模式,实现更多功能,譬如re.IGNORECASE即代表大小写忽略 - na: 用于自定义遇到缺失值时返回的对象,通常建议设置为
False - regex: bool型,用于设置是否将
pat参数视为正则表达式进行解析,默认为True
下面是一些简单的例子:

2.2.3 利用match()判断是否以指定正则模式开头
类似前面介绍的startswith(),不同的是,match()支持正则表达式,可以帮助掌握正则表达式的用户拓展匹配能力,其主要参数有:
- pat: str型,必选,用于定义要检查的字符模式,当
regex=True时表示正则表达式,当regex=False时,表示原始字符串片段 - flags: int型,可选,对应
re模块中的flags参数,用于配合正则表达式模式,实现更多功能,譬如re.IGNORECASE即代表大小写忽略 - na: 用于自定义遇到缺失值时返回的对象,通常建议设置为
False
下面是一些简单的例子:

2.2.4 利用fullmatch()判断字符串是否完整满足指定正则模式
上面介绍的match()局限性在于只能从开头匹配是否满足指定正则表达式,而从pandas1.1.0版本开始,新增了fullmatch()方法,可以帮助我们传入正则表达式来判断目标字符串是否可以完全匹配,其参数同match(),下面是一个简单的例子:

2.3 生成型方法
生成型方法这里指的是,基于原有的单列字符型Series数据,按照一定的规则产生出新计算结果的一系列方法,pandas中常用的有:
2.3.1 利用slice()进行字符切片
当我们想要对字符型Series进行元素级的切片操作时,就可以用到str.slice(),其三个参数依次为start、stop和step,分别代表切片的开始下标、结束下标与步长,与Python原生的切片方式一致,下面是一些简单的例子(也可以直接使用类似Python中[start:stop:step]):

2.3.2 利用replace()对指定字符片段或正则模式进行替换
当我们希望对字符型Series进行元素级的字符片段/正则模式替换时,就可以使用到str.replace()方法,其除了常规的pat、flags、regex等参数外,还有特殊的参数n用于设置每个元素字符串(默认为-1即不限制次数),参数repl用于设置填充的新内容,从开头开始总共替换几次,下面是一些简单的例子:

2.3.3 利用split()按照指定字符片段或正则模式拆分字符串
利用str.split()方法,我们可以基于指定的字符片段或正则模式对原始字符Series进行元素级拆分,主要参数有pat、n,同上文类似的参数设定,另外还有特殊参数expand来设定对于是否以DataFrame中不同列的形式存储拆分结果,默认为False。下面是一些简单的例子:

2.3.4 利用findall()提取符合指定模式的片段
利用findall(),可以按照指定的字符片段/正则模式对字符型Series进行元素级提取,可用的参数有pat、flags,下面是一些简单的例子:

2.3.5 利用count()进行频数统计
通过count(),我们可以对指定的字符片段/正则模式在字符型Series中每个字符串元素中出现的次数进行统计,其参数同上文中的findall(),下面是一些简单的例子:

2.4 特殊型方法
除了上述介绍到的字符串处理方法外,pandas中还有一些特殊方法,可以配合字符串解决更多处理需求,典型的有:
2.4.1 利用get_dummies()方法生成哑变量
在涉及到机器学习特征工程的过程中,我们可以使用到str.get_dummies()方法来对具有固定分隔符的字符串进行哑变量的生成,它只有一个参数sep,用于设置分隔符,暂时不支持正则模式:

2.4.2 利用pd.to_numeric()修复数值错误
有些情况下,我们从外部数据源(如excel表)中读入的数据,由于原始数据文件加工的问题,导致一些数值型字段中的某些单元格混入非数值型字符,如:

这种情况下,直接读入的数据,本应该为数值型的字段会变成object型:

这种时候就可以利用pd.to_numeric()方法,设置参数errors='coerce',就可以将可以合法转为数值型的记录转换为相应的数值,不合法的位置返回缺失值:

以上就是本文的全部内容,欢迎在评论区与我进行讨论~
(数据科学学习手札131)pandas中的常用字符串处理方法总结的更多相关文章
- (数据科学学习手札21)sklearn.datasets常用功能详解
作为Python中经典的机器学习模块,sklearn围绕着机器学习提供了很多可直接调用的机器学习算法以及很多经典的数据集,本文就对sklearn中专门用来得到已有或自定义数据集的datasets模块进 ...
- (数据科学学习手札32)Python中re模块的详细介绍
一.简介 关于正则表达式,我在前一篇(数据科学学习手札31)中已经做了详细介绍,本篇将对Python中自带模块re的常用功能进行总结: re作为Python中专为正则表达式相关功能做出支持的模块,提供 ...
- (数据科学学习手札42)folium进阶内容介绍
一.简介 在上一篇(数据科学学习手札41)中我们了解了folium的基础内容,实际上folium在地理信息可视化上的真正过人之处在于其绘制图像的高度可定制化上,本文就将基于folium官方文档中的一些 ...
- (数据科学学习手札69)详解pandas中的map、apply、applymap、groupby、agg
*从本篇开始所有文章的数据和代码都已上传至我的github仓库:https://github.com/CNFeffery/DataScienceStudyNotes 一.简介 pandas提供了很多方 ...
- (数据科学学习手札72)用pdpipe搭建pandas数据分析流水线
1 简介 在数据分析任务中,从原始数据读入,到最后分析结果出炉,中间绝大部分时间都是在对数据进行一步又一步的加工规整,以流水线(pipeline)的方式完成此过程更有利于梳理分析脉络,也更有利于查错改 ...
- (数据科学学习手札49)Scala中的模式匹配
一.简介 Scala中的模式匹配类似Java中的switch语句,且更加稳健,本文就将针对Scala中模式匹配的一些基本实例进行介绍: 二.Scala中的模式匹配 2.1 基本格式 Scala中模式匹 ...
- (数据科学学习手札44)在Keras中训练多层感知机
一.简介 Keras是有着自主的一套前端控制语法,后端基于tensorflow和theano的深度学习框架,因为其搭建神经网络简单快捷明了的语法风格,可以帮助使用者更快捷的搭建自己的神经网络,堪称深度 ...
- (数据科学学习手札47)基于Python的网络数据采集实战(2)
一.简介 马上大四了,最近在暑期实习,在数据挖掘的主业之外,也帮助同事做了很多网络数据采集的内容,接下来的数篇文章就将一一罗列出来,来续写几个月前开的这个网络数据采集实战的坑. 二.马蜂窝评论数据采集 ...
- (数据科学学习手札40)tensorflow实现LSTM时间序列预测
一.简介 上一篇中我们较为详细地铺垫了关于RNN及其变种LSTM的一些基本知识,也提到了LSTM在时间序列预测上优越的性能,本篇就将对如何利用tensorflow,在实际时间序列预测任务中搭建模型来完 ...
随机推荐
- [RabbitMQ]下载&安装
RabbitMQ是基于Erlang语言开发的消息中间件,所以使用RabbitMQ需要安装Erlang和RabbitMQ两个软件. 1 Erlang 1.1 下载 官网下载地址:https://www. ...
- nginx负载均衡部署
1 系统版本 CentOS Linux release 6.0.1708 (Core) 2 编译安装前所需要的准备: 1.GCC编译器 首先检查GCC是否安装,命令:gcc -v ,如果显示有相关版本 ...
- SQL 居然还能在 Apache ShardingSphere 上实现这些功能?
在去年 10 月 5.0.0-alpha 版本发布之后,Apache ShardingSphere 经历了长达 8 个多月的持续开发与优化,终于在 6 月 25 日正式迎来了 5.0.0-beta 版 ...
- Java基础之(三):IDEA的安装及破解
IDEA的安装 IDEA官网:IDEA 点击IJ 找好操作系统,点击下载 双击打开,自己找个安装路径 勾选这两个即可 旗舰版破解及汉化 上面是个人社区版,是免费的,但是如果想要使用汉化版的,需要寻找插 ...
- GoLang设计模式11 - 备忘录模式
备忘录模式是一种行为型设计模式.这种模式允许我们保存对象在某些关键节点时的必要信息,以便于在适当的时候可以将之恢复到之前的状态.通常它可以用来帮助设计撤销/恢复操作. 下面是备忘录设计模式的主要角色: ...
- 解决VS2015安装后stdio.h ucrtd.lib等文件无法识别问题,即include+lib环境变量配置
转载自:http://blog.csdn.net/carl_qi/article/details/51171280 今天突然想在windows上装个 VS2015 玩玩,结果遇到了如下bug: 安装完 ...
- 240.搜索二维矩阵II
从左下角位置开始搜索 时间复杂度:O(行数+列数). 想法有点像二分法,大了往一个方向找,小了往另一个方向找.由于矩阵横向和纵向都是递增,如果从(0,0)位置开始找,往右和往下都是增大,因此不知道实际 ...
- win 常用修复蓝屏,系统比对最后更新20210804
您可以尝试以下方案: 在管理员命令提示符下键入以下命令:Dism /Online /Cleanup-Image /ScanHealth这条命令将扫描全部系统文件并和官方系统文件对比,扫描计算机中的不一 ...
- [no_code]团队贡献分分配规则
项目 内容 2020春季计算机学院软件工程(罗杰 任健) 2020春季计算机学院软件工程(罗杰 任健) 作业要求 团队贡献分分配规则 我们在这个课程的目标是 远程协同工作,采用最新技术开发软件 这个作 ...
- logstash的安装和简单使用
logstash的安装和简单使用 一.安装 1.下载并解压 2.logstash 一些命令行参数 1.查看帮助信息 2.加载指定pipeline文件路径 3.检测配置文件语法是否有错误 4.热加载pi ...