Pandas学习笔记九——向量化字符串操作

向量化字符串操作

使用pyhton的一个优势就是字符串处理起来比较容易。在此基础上创建的pandas同样提供了一系列向量化字符串操作,他们都是在处理(清理)现实工作中的数据时不可或缺的功能。向量化操作简化了纯数值的数组操作语法——我们不需要再担心数组的长度或维度,只需要关心需要的操作。然而,由于numpy并没有为字符串数组提供简单的接口,因此需要通过频繁的for循环(列表生成式)来解决问题。

Pandas为包含字符串的Series和Index对象提供了str属性堪称是两全其美的方法,他可以满足向量化字符串操作的需求,又可以正确的处理缺失值。

import pandas as pd
data = ['peter', 'paul', None, 'mary', 'guido']
names = pd.Series(data)
#将字符串转化为大写
names.str.capitialize()

#输出结果:
0    Peter
1     Paul
2     None
3     Mary
4    Guido
dtype: object

Pandas字符串方法列表

1、与python字符串方法相似的方法

常用的有:len(), lower(), upper(), startswith(), endswith(), strip(), index(), find(), capitalize(), split(), partition()

2、使用正则表达式的方法

pandas包装了一些根据python标准库的re模块实现的API

方法 描述
match() 对每个元素调用re.match(),返回布尔类型值
extract() 对每个元素调用re.match(),返回p匹配的字符串数组(groups)
findall() 对每个元素调用re.findall()
replace() 用正则模式替换字符串
contains() 对每个元素调用re.search(),返回布尔类型值
count() 计算符合正则模式的字符串的数量
split() 等价于str.split(),支持正则表达式
rsplit() 等价于str.rsplit(),支持正则表达式

3、其他字符串方法

方法 描述
get() 获取元素索引上的值,索引从0开始
slice() 对元素进行切片操作
slice_replace() 对元素进行切片替换
cat() 连接字符串(此功能比较复杂,建议阅读文档)
repeat() 重复元素
normalize() 将字符串转换为Unicode规范形式
pad() 在字符串的左边,右边或两边增加空格
wrap() 将字符串按照指定的宽度换行
join() 用分隔符连接Series的每个元素
get_dummies() 按照分隔符提取每个元素的dummy变量,转换为one-hot编码的DataFrame
#向量化字符串的取值和切片操作
monte = pd.Series(['Graham Chapman', 'John Cleese', 'Terry Gilliam', 'Eric Idle', 
                   'Terry Jones', 'Michael Palin'])
#df.str.slice(0,3)等价于df.str[0:3]
monte.str[:3]

#输出结果:
0    Gra
1    Joh
2    Ter
3    Eri
4    Ter
5    Mic
dtype: object
#获取每个人的last name
monte.str.split().str.get(-1)

#输出结果:
0    Chapman
1     Cleese
2    Gilliam
3       Idle
4      Jones
5      Palin
dtype: object
#类别变量的编码get_dummies()
full_monte = pd.DataFrame({'name':monte,
                           'info':['B|C|D', 'B|D', 'A|C', 'B|D' ,'B|C', 'B|C|D']})
full_monte['info'].str.get_dummies('|')

#输出结果:
Out[80]: 
   A  B  C  D
0  0  1  1  1
1  0  1  0  1
2  1  0  1  0
3  0  1  0  1
4  0  1  1  0
5  0  1  1  1

猜你喜欢

转载自blog.csdn.net/jasonzhoujx/article/details/81702975
今日推荐