《pandas 文本处理大全.docx》由会员分享,可在线阅读,更多相关《pandas 文本处理大全.docx(19页珍藏版)》请在第一文库网上搜索。
1、pandas文本处理大全导读:本次来介绍关于文本处理的常用方法Cpandas 曜幽文本的主要两个类型是string和object。如果不特殊指定类型为string,文本类型一般为objecto文本的操作主要是通过访问器str来实现的,功能十分强大,但使用前需耍注意以下几点o1. 访问器只能对Series数据结构使用。 除了常规列变量df,col以外,也可以对索引类型df. Index和df. col umns使用2. 确保访问的对象类型是字符串str类型。如果不是需要先astype(str)转换类型,否则会报错3. 访问器可以多个连接使用。如df. col. str. lower (). st
2、r. upper (),这个和Dataframe中的一行操作是一个原理下面正式介绍文本的各种骚操作,基本可以涵盖日常95%的数据清洗需耍了,一共8个场景。以下操作均基于下面的数据:import pandas as pdimport numpy as npdf = pd. DataFrame(,name,: jordon,, MIKE, Kelvin, xiaoLi, qiqi,Amei,Age: 18, 30, 45, 23, 45, 62,level) : high, Low, M, L, middle,, np. nan,Emair : jordonsohu. com , Mike,Kel
3、vinChaigmai1. com , xiaoli163. com ,np.nan,ameiqq. com)nameAgelevelEmail0jordon18highjordon1MIKE30LowMike126. cn2Kelvin45MKeivi nChai 3xiaoLi23Lxiaoliqiqi45middleNaN5 Amei62NaNameih、文本格式|大小写变换#字符全部变成小写s. str. lower ()#字符全部大写5. str. upper ()#每个单词首字母大写5. str. title ()#字符串第一个字母大写5. str. capitalize ()#大
4、小写字母转换s. str. swapcase ()上面用法都比较简单,不逐一举例,这里举一个对columns变成小写的例子。df. columns, str. lower ()Index (name , age , leveT , emai T ,dtype=object)格式判断下而均为判断操作,因此返回布尔值。s. str. isalpha #是否为宁住s.str. isnumeric#是否为数字0-9s. str. isalnums. str- isuppers. str- islower5. str- isdigit#是否由字母和数字组成#是否为大写#是否为小写#是否为数字对齐#居中对
5、齐,宽度为8,其余用*填充s. str. center (, fillchar=*)#左对齐,宽度为8,其余用*填充s.str.1 just (8,fillchar二*)n右对齐,宽度为8,其余用*填充s. str. rjust (8,fillchar二*)#自定义对齐方式,参数可调整宽度、对齐方向、填充字符s. str. pad(width=8, side=both , fillchar=*)*举例df. name. str. center(8, fillchar=*)0*jordon*1 *MIKE*2 *Kelvin*qiqi*5*Amei*计数和编码s. str. count ( b
6、) #字符串种包括指定字母的数量s. str. len() #字符串长度s. str. encode utf-8, ) # 字符编码s. str. decode utf-8, ) # 字符解码12、文本拆分通过使用split方法可以某个指定的字符作为分割点拆分文本。其中,expand参数可以让拆分的内容展开,形成单独的列,n参数可以指定拆分的位置来控制形成几列。下面将email变量按照进行拆分。#使用方法s. str. split ( x, expand=True, n=l)#举例df. Email. str. split ( )0 jordon,sohu. com1Mike, 2Kelvin
7、Chai, xiaoli, NaN1xxx126. cn5amei, qqe com# expand可以让拆分的内容扩展成单独一列df. Email, str. split (, expand=True)010 jordonsohue com1 Mike2 KelvinChai gmai1. com3 xiaoli163. com4 NaNNaN5 amei那么可更复杂的拆分可以借助正则表达式,比如想同时通过和.进行拆分,以这样实现。df. Email, str. split ( | .,expand=True)0120jordonsohucom1Mike126cn2KelvinChaigma
8、ilcom3xiaoli163com4NaNNaNNaN5ameiqqcom卜、文本替换|文本替换有几种方法:replace, siice_replace, repeatreplace 替换replace方法是最常用的替换方法,参数如下:pal:为被替代的内容字符串,也可以为正则表达式repl:为新内容字符串,也可以是一个被调用的函数regex:用于设置是否支持正则,默认是True# 将email种的com都替换为cndf. Email, str. replace ( coni cn)0jordon1 Mike2 KelvinChaigmail. cn3 xiaoli4 NaN5 amei更复
9、杂一点的,比如将旧内容写成正则表达式。#将之前的名字都替换成XXXdf. Email. str. replace () (. *?) , xxx)xxxxxx3xxx4NaN5xxx或者将新内容写成被调用的函数。df. Email, str. replace (,(,*?), lambda x:x. group(). upper ()0JORDONsohu. com1 MIKE126. cn2 KELVINCHAIgmail. com3 XIA0LI163. com4 NaN5 AMEIqq. com切片替换slice_replace通过切片的方式实现替换,通过切片可以保留或者删除指定的字符,
10、参数如下。ostart:起始位置ostop:结束位置orepl:要替换用的新内容对start切片位置之后和stop切片位置之前进行替换,如果没有设置stop,那么start之后全部进行替换,同理如果没设置start,那么stop之前全部进行替换。df. Email, str. slice_replace(start=l, stop=2,repl=,XX)0jXXrdonsohu. com1 MXXke126. cn2 KXXlvinChai3 xXXaoli163. com4 NaN5 aXXeiqq. com重复替换repeat可以实现重复替换的功能,参数repeats设置重复的次数。df.
11、name. str. repeat(repeats=2)0jordonjordon1 MIKEMIKE2 KelvinKelvin3 xiaoLixiaoLi4 qiqiqiqi5 AmeiAmei|4、文本拼接|文本拼接通过cat方法实现,参数:others:需要拼接的序列,如果为None不设置,就会自动把当前序列拼接为一个字符串sep:拼接用的分隔符ona_rep:默认不对空值处理,这里设置空值的替换字符。ojoin:拼接的方向,包括 left, right, outer, inner,默认为 left主要有以下几种拼接方式。1.将单个序列拼接为一个完整字符串如上所述,当没有设置。hter
12、s参数时,该方法会将当前序列合并为一个新的字符串。df. name. str. cat ()jordonMIKEKelvinxiaoLiqiqiAmei,#设置sep分隔符为df. name. str. cat (sep=,-)jordon-MIKE-Kelvin-xiaoLi-qiqi-Amei#将缺失值赋值为df. level, str. cat (sep=,, na_rep=,*)high-Low-M-L-middle-*2.拼接序列和其他类列表型对象为新的序列下面先将nam。列和*列拼接,再将lovol列拼接,形成一个新的序歹儿# str. cat多级连接实现多列拼接df. name.
13、 str. cat (*6). str. cat (df. level)jordon*high1 MIKE*Low2 Kelvin*M3 xiaoLi*L4 qiqi*middle5 NaN#也可以直接多列拼接df name. str. cat (df. level, df Email, na_rep=,*)0jordonhighjordon1MIKELowMike126. cn2 Ke1v i nMK e1v i nCha i gma 3 xiaoLiLxiaoli4 qiqimiddle*5 Amei*ameiqq. com将一个序列与多个对象拼接为一个新的序列15、文本提取文本提取主要通过extract来实现的。extract 参数:pat:通过正则表达式实现一个提取的patternflags:正则库re中的标识,比如re. IGNORECASEexpand:当正则只提取一个内容时,如果expand=True会展开返回一个DataFrame,否则返回一个 Series#提取email中的两个内容df.