首页Python13.数据清洗与处理——字...

13.数据清洗与处理——字符串操作及正则表达式

Pandas允许将字符串和正则表达式简洁地应用到数组上。

1.字符串对象方法:

Python内建的字符串方法在日常已经足够使用。

str = "米筑 ,设计师 , 平台"

# split()方法用于分割字符串
print(str.split(','))
print('---------------')
# split()经常与strip()方法一起使用,用于清除空格
str_new = [x.strip() for x in str.split(',')]
print(str_new)
print('---------------')
# join()方法用于使用字符串粘和其他字符串序列
print('--'.join(str_new))
print('---------------')
# in用于检测子字符串
print('米筑' in str_new)
print('---------------')
# index()和find()方法返回子字符串的位置,不同的是如果没有找到index()返回ValueError,find()返回-1
print(str.index('米筑'))
print(str.find('台'))
print('---------------')
# count()方法返回某个特定子字符串在字符串中出现的次数
print(str.count('米'))
print('---------------')
# replace()方法用于字符串替代操作,通常传入空字符串来删除某个模式
print(str.replace(' ',''))
['米筑 ', '设计师 ', ' 平台']
---------------
['米筑', '设计师', '平台']
---------------
米筑--设计师--平台
---------------
True
---------------
0
11
---------------
1
---------------
米筑,设计师,平台

2.正则表达式:

正则表达式提供了一种在文本中灵活查找或匹配字符串模式的方法。Python中内建的re模块是用于将正则表达式应用到字符串上的库。

更多正则表达式使用内容可以查看Python网络爬虫板块中的re库使用文章。

3.向量化字符串函数:

在日常数据处理工作中经常会遇到包含字符串的列含有缺失值,这时一些方法(例如map函数)作用到NaN值是会失败。为了解决这个问题,Series有面向数组的方法用于跳过NaN值的字符串操作,这些方法通过Series的str属性进行调用。

方法说明
cat根据可选的分隔符按元素粘和字符串
contains返回是否含有某个模式/正则表达式的布尔型数组
count返回指定模式出现的次数
extract使用正则表达式从字符串Series中分组抽取一个或多个字符串,返回的结果是每个分组形成的一列DataFrame
endswith等价于对每个元素使用x.endwith
startswith等价于对每个元素使用x.startwith
findall找出字符串中所有模式/正则表达水匹配项,返回一个列表
get对每个原色进行索引,获得第i个元素
isalnum等价于内建的str.alnum
isalhpa等价于内建的str.isalhpa
isdecimal等价于内建的str.isdecimal
isdigit等价于内建的str.isdigit
islower等价于内建的str.islower
isnumeric等价于内建的str.isnumeric
isupper等价于内建的str.isupper
join通过指定的分隔符联合字符串
len返回字符串的长度
lower、upper转换大小写
match使用re.match将正则表达式应用到每个元素上,将匹配分组以列表形式返回
pad将空白加到字符串的左边、右边或两边
center等价于pad(side=’both’)
repeat将字符串重复指定次(s.str.repeat(3)等价于将字符串复制3次str×3
replace以指定模式替代字符串
slice对Series中的字符串进行切片
split以分隔符或正则表达式对字符串进行拆分
strip对字符串两侧的空白和换行符进行消除
retrip消除字符串右边的空白
lstrip消除字符串左边的空白
dict = {'AAA':'111111@qq.com','BBB':'222222@163.com','CCC':np.nan,'DDD':'333333@qq.com'}
data = pd.Series(dict)

print(data)
print('---------------')
print(data.isnull)
print('---------------')
print(data.str.contains('qq'))
AAA     111111@qq.com
BBB    222222@163.com
CCC               NaN
DDD     333333@qq.com
dtype: object
---------------
<bound method Series.isnull of AAA     111111@qq.com
BBB    222222@163.com
CCC               NaN
DDD     333333@qq.com
dtype: object>
---------------
AAA     True
BBB    False
CCC      NaN
DDD     True
dtype: object

Reference:
《Python for Data Analysis:Data Wrangling with Pandas,Numpy,and IPython》

RELATED ARTICLES

欢迎留下您的宝贵建议

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Recent Comments