我是靠谱客的博主 整齐水壶,最近开发中收集的这篇文章主要介绍第十五篇,数据分析之pandas的矢量化字符串,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

先写个案例看看:

a = 'abcd'
b = ['abc','cba','bca']
print(a.capitalize())
print([a.capitalize() for a in b])
Abcd
['Abc', 'Cba', 'Bca']

将它们的第一个字母变为大写,很简单的,也不是所有对象都可以使用capitalize(),里面如果有缺失数据的话就会导致报错,再看看Series函数:

a = [1,2,None,3]
b = pd.Series(a)
print(b + 5)
0
6.0
1
7.0
2
NaN
3
8.0
dtype: float64

通常上面这种称为对象矢量化,矢量化后之前对象的None就变成NaN(一个特殊的浮点数),当然列表里的字符串也是可以矢量化的。

a = ['1','2',None,'3']
b = pd.Series(a)
print(b)
0
1
1
2
2
None
3
3
dtype: object

可以看出来上面那个b所引用的对象就不再是列表了,而是一个把列表矢量化为Series类型的对象。对于这种Series对象,有str属性,下面有个capitalize():

a = ['abc','cba','bca']
b = pd.Series(a)
print(b.str.capitalize())
0
Abc
1
Cba
2
Bca
dtype: object

上面那个b就是矢量化字符串后的Series对象。

b = pd.Series(['abc','cba','bca'])
a = dir(str) #字符串对象的所有属性与方法的名称列表
c = dir(b.str) #矢量化字符串的所有属性与方法的名称列表
a1 = [i for i in a if '_' not in i] #删除特殊的属性与方法
c1 = [i for i in a if '_' not in i] #删除特殊的属性与方法
print(np.intersect1d(a1,c1)) #两者共有的方法名称
['capitalize' 'casefold' 'center' 'count' 'encode' 'endswith' 'expandtabs'
'find' 'format' 'index' 'isalnum' 'isalpha' 'isascii' 'isdecimal'
'isdigit' 'isidentifier' 'islower' 'isnumeric' 'isprintable' 'isspace'
'istitle' 'isupper' 'join' 'ljust' 'lower' 'lstrip' 'maketrans'
'partition' 'replace' 'rfind' 'rindex' 'rjust' 'rpartition' 'rsplit'
'rstrip' 'split' 'splitlines' 'startswith' 'strip' 'swapcase' 'title'
'translate' 'upper' 'zfill']

从上面可以看出来的,矢量化字符串对象与python中的内置的字符串对象,它们所有的方法名称大部分是相同的,可以多做几个案例加深理解:

a = pd.Series(['abc','cba','bca'])
print(a.str.lower())
print(a.str.len())
print(a.str.split())
0
abc
1
cba
2
bca
dtype: object
0
3
1
3
2
3
dtype: int64
0
[abc]
1
[cba]
2
[bca]
dtype: object

对于字符串的操作,正则表达式有着不可替代的作用,对矢量化字符串也是一样的,具体正则表达式就不解释,下面写一个正则表达式的案例:

a = pd.Series(['123abcABC@','456cbaBCA@','4568bcaB'])
b = '^[0-9A-Za-z]+@'
print(a.str.match(b))
0
True
1
True
2
False
dtype: bool

上面就表示如果将a与b去进行匹配通过a.str.match(b)方法,如果符合检验要求则返回true,否则返回false。
下面页可以尝试一下对字符串进行切片和索引是否可以使用:

a = pd.Series(['abc','cba','bca'])
print(a.str.lower())
print(a.str[2])
print(a.str.get(2))
print(a.str[:2])
print(a.str.slice(0,2))
0
abc
1
cba
2
bca
dtype: object
0
c
1
a
2
a
dtype: object
0
c
1
a
2
a
dtype: object
0
ab
1
cb
2
bc
dtype: object
0
ab
1
cb
2
bc
dtype: object

这里字符串的索引与切片就不多讲,从上面可以看出来python对字符串的索引和切片,对于矢量化也是可以使用的,并且提供get()和slice()两个可以实现同样的功能。

最后

以上就是整齐水壶为你收集整理的第十五篇,数据分析之pandas的矢量化字符串的全部内容,希望文章能够帮你解决第十五篇,数据分析之pandas的矢量化字符串所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部