文本数据

文本数据类型处理–>pandas==1.0.0,其具有str对象的设计和string类型的引入两块内容。
本章知识点:str对象性质、正则表达式、文本处理五类操作、常用字符串函数

标准库的str模块

标准库str的内置函数可以分为以下4类:

对字符串不做修改

判断isalpha

startwith: 判断字符串是否以指定前缀开头
endwith: …指定后缀结尾…
isalnum: 判断是否是alpha+num格式[a-z][A-Z][0-9]

'fsj23289'.isalnum() # -> True
'fsj23@289'.isalnum() # -> False

isalpha: 判断是否是纯字母[a-z][A-Z]
isdigit: 判断数字格式[0-9]
islower: 判断小写字母格式[a-z]
isupper: 判断大写字母格式
istitle: 判断首字母是否大写[A-Z][a-z]?+(分隔符可以是空格问号加号)
isspace: 判断是否均为空格\s+

 '   \t \n \v'.isspace() # -> True

isascii: 判断是否是ascii码
isdecimal
isidentifier
isnumeric
isprintable
str.contains()

查找find和计数count

count: 返回字符串中出现子串的次数
find: 返回第一个匹配的子串的坐标,不存在字串时返回-1
index: 返回第一个匹配的子串的坐标,不存在子串时报错ValueError
rfind: 从右边匹配第一个子串的坐标,不存在子串时返回-1
rindex

对原字符串修改

大小写

lower: 出现特殊字符的时候可以使用casefold
upper
capitalize: 将所有单词首字母大写
title: 第一个字母大写
swapcase: 反转大小写

填充ljust

ljust: 使用指定字符,将字符串向右填充到指定长度,如果字符串已经有这么长则不填充,只能填充一个字符。
rjust: 使用指定字符,将字符串向左填充到指定长度;zfill: 在字符串左侧补零到指定长度
center: 使用指定字符,将字符串向两侧填充到指定长度

剥离strip

strip: 移除两侧的空格,如果指定chars,移除chars内的字符
lstrip: 移除左侧的空格
rstrip: 移除右侧的空格
下面这个例子没搞懂

'abcabcThisaaaaaaaa'.strip('abc') # -> 'This'
'abcabcThisaaaaaaaa'.lstrip('abc') # -> 'Thisaaaaaaaa'
'abcabcThisaaaaaaaa'.rstrip('abc') # -> 'abcabcThis'

替换和格式化format

replace: 将匹配的子串替换成新的指定字符串S.replace(old, new, count=-1)
S.expandtabs(tabsize=8): 将tab字符(也就是\t)转换成空格,相当于S.replace('\t', ' ')
translate&maketrans: 将匹配的子串替换成新的指定字符串

tab = str.maketrans('abcde', '12345')
'The match was abandoned because of bad weather'.translate(tab)
# -> 'Th5 m1t3h w1s 121n4on54 2531us5 of 214 w51th5r'

format: 将{}括起来的字符串替换为指定参数,format_map功能类似

map = {'a': 'not', 'b': 'my', 'who': 'jason'}
'this is {a} {b} string. it belongs to {who}.'.format_map(map)
# -> 'this is not my string. it belongs to jason.'

切分和合并

split(sep=None, maxsplit=-1): 默认使用空格分割,maxsplit指定最大分组个数,rsplit具有类似的用法,只是其默认从右边往左分割
S.join(<iterable>): 指定连接符将一个可迭代对象合并成一个字符串,返回一个数组

'^-^'.join(['this', 'is', 'not', 'my', 'string']
# -> 'this^-^is^-^not^-^my^-^string'

str.cat()

splitlines: 将字符串按照换行符分割,返回一个数组S.splitlines(keepends=False)

'this is not my string\n second line'.splitlines()
['this is not my string', ' second line']

S.partition(sep)rpartition: 将字符串按照指定字符分割成两半,返回一个元组

'this is not my string'.partition(' ')
('this', ' ', 'is not my string')

编码转换encode

In : '你好'.encode('gbk')
Out: b'\xc4\xe3\xba\xc3'In : '你好'.encode('utf-8')
Out: b'\xe4\xbd\xa0\xe5\xa5\xbd'

待补充pd中的str相关函数和方法

pandas中的文本数据

str对象的设计

str对象是定义在IndexSeries上的属性,能对文本序列进行快速处理。
对一个序列进行文本处理,首先需要获取其str对象,pandas中的用法类似于python中的str模块

s = pd.Series(['abc', 'efg', 'hi'])
s.str
s.str.upper()

str对象方法一共有50个,其中有31个和标准库中的str模块中的方法同名且功能一致,同时在索引或切片方式上,它俩也具有高度相似性。

s.str[0]
s.str[-1: 0: -2]
s.str[2] # 第三个元素越界缺失
# 超出范围则返回缺失值

string类型

pandas从1.0.0开始引入了string类型,引入动机在于:原来所有字符串类型都会以object类型的Series进行存储,但object类型适用于存储混合类型,也就是同时存储不同的数据类型。字符串有必要拥有自己的数据存储类型。
尽量保证每一个序列中的值都是字符串,这种情况下再使用str对象。但是这是非必须的,如果对一个非字符串的对象进行索引或切片,string类型的str对象和object类型的str对象的返回结果可能是不同的。

s = pd.Series([{1: 'temp_1', 2: 'temp_2'}, ['a', 'b'], 0.5, 'my_string'])
s.str[0] # ->
0    None
1       a
2     NaN
3       m
dtype: object
s.astype('string').str[0] # ->
0    {
1    [
2    0
3    m
dtype: string

当序列类型为object时,其对每一个元素进行[]索引,因此对于第一个的字典而言,返回temp_1字符串;对第二个的列表而言,返回第二个值;对于第三个的不可迭代对象返回缺失值;对于第四个的字符串而言进行[]索引返回字符串的第二位字母y
string类型的str对象先把整个元素转为字面意义的字符串,再进行字符串的[]索引

两者的另一个差别在于,string类型是Nullable类型,但object不是。这意味着 string 类型的序列,如果调用的 str 方法返回值为整数 Series 和布尔 Series 时,其分别对应的 dtype 是 Int 和 boolean 的 Nullable 类型,而 object 类型则会分别返回 int/float 和 bool/object ,取决于缺失值的存在与否。同时,字符串的比较操作,也具有相似的特性, string 返回 Nullable 类型,但 object 不会

s = pd.Series(['a'])
s.str.len()
s.astype('string').str.len()
s == 'a'
s.astype('string') == 'a'
s = pd.Series(['a', np.nan]) # 带有缺失值
s.str.len()
s.astype('string').str.len()
s == 'a'
s.astype('string') == 'a'

练一练

a = pd.Series([1,2],[4,5])
a.str[::-1] # -> 报错
a.astype('string').str[::-1] # -> 子列表中的元素被翻转了

这个例子说明对于全体元素为数值类型的序列,无论其序列为什么类型,也不允许直接使用str对象,如果需要把数值类型当场string类型处理,可以使用astype()强制转换

正则表达式基础

参阅正则表达式必知必会
可以利用re模块的findall()函数来匹配所有出现过且不重叠的文本模式,其第一个参数为正则表达式,第二个参数为待匹配的字符串

# 从下面的字符串中找出Apple
reg, string = "Apple", "Apple! This Is an Apple!"
import re
re.findall(reg, string)
# 注意捕获模式不会重叠捕获

元字符

元字符是正则表达式中的特殊字符,它可以被大致分为4类:集合元字符、频次元字符、逻辑元字符和位置元字符
待补充

分组捕获与反向引用

待补充

零宽断言

Datawhale-Pandas中文教程[9]相关推荐

  1. Pandas中文教程

    导航 索引 模块 | 下一个 | pandas 0.19.2 documentation» 目录 新功能 安装 为pandas贡献 常见问题(FAQ) 套装概述 10分钟入门pandas 教程 食谱 ...

  2. Pandas基本教程

    Pandas 是 Python 的核心数据分析支持库,提供了快速.灵活.明确的数据结构,旨在简单.直观地处理关系型.标记型数据.Pandas 的目标是成为 Python 数据分析实践与实战的必备高级工 ...

  3. Python-EEG工具库MNE中文教程(14)-Epoch对象中的元数据(metadata)

    目录 本分享为脑机学习者Rose整理发表于公众号:脑机接口社区 .QQ交流群:903290195 本案例演示使用Epochs元数据.关于Epochs数据结构:可以查看文章Python-EEG工具库MN ...

  4. 2019b官方手册中文版_数据科学|「最全」实至名归,NumPy 官方早有中文教程,结合深度学习,还有防脱发指南...

    文章须知 文章作者:机器之心 责任编辑:书生 审核编辑:阿春 微信编辑:玖蓁 本文转载自公众号 机器之心 (ID:almosthuman2014) 原文链接:「最全」实至名归,NumPy 官方早有中文 ...

  5. Angularjs中文教程

    Angularjs中文教程 http://docs.ngnice.com/guide posted on 2015-05-11 09:36 资江河畔 阅读(...) 评论(...) 编辑 收藏 转载于 ...

  6. 全网首发 | 第一个opencv_contrib扩展模块中文教程限时领取

    点击上方"小白学视觉",选择"星标"公众号 重磅干货,第一时间送达 OpenCV是学习计算机视觉的重要工具之一,然而多年以来,在深度学习的deBuff下,Ope ...

  7. 【好资源】全网第一份,OpenCV 4-Contrib扩展模块中文教程

    今天给大家分享一个优质的计算机视觉学习资源,帮助大家在使用OpenCV的道路上越走越远,目前资源已被翻译作者开源,提供了pdf版方便大家学习.此外,作者会实时维护资料的完整性. 重点说明:这份资源极有 ...

  8. Swift中文教程(五)--对象和类

    原文:Swift中文教程(五)--对象和类 Class 类 在Swift中可以用class关键字后跟类名创建一个类.在类里,一个属性的声明写法同一个常量或变量的声明写法一样,除非这个属性是在类的上下文 ...

  9. ArcGIS_系列中文教程下载

                                                        ArcGIS_系列中文教程 如链接有问题请在留言中说明ArcGIS9中文版系列丛书PDF(原书一 ...

  10. 苹果Swift语言中文教程资源汇总

    苹果swift语言中文教程(零)搭配环境以及代码运行成功http://vjiazhi.com/kaifa/1014.html 苹果Swift语言中文教程(一)基础数据类型 http://vjiazhi ...

最新文章

  1. 【Android】Android程序自己主动更新
  2. python list()函数 (从可迭代对象返回初始化的新列表)
  3. 机器人学习--路径规划算法
  4. php写入rabbit速度,RabbitMQ 入门教程(PHP) 实现延迟功能
  5. ngx.location.capture 只支持相对路径,不能用绝对路径
  6. SQL Server删除重复行的6个方法
  7. win软件推荐:ACDSee Photo Studio Ultimate 2022(图片编辑器)
  8. jQuery UI 拖动(Draggable) - 还原位置
  9. 智能公交监控调度系统技术方案,等车不再等到心碎
  10. Spring boot mqtt客户端
  11. GBK 与GB2312 互查 区位码
  12. 学习笔记|JSP教程|菜鸟教程
  13. 怎么安装paraview_ParaViewWeb基于本地服务的环境部署
  14. 大师级思考者是怎么探索事物本质的?
  15. MSSQL父子关系表的SQL查询(SQL Query for Parent Child Relationship)
  16. 【Python】杂记
  17. ubuntu修改u盘权限_ubuntu系统下向U盘拷贝数据提示目标是只读的
  18. C++ 调用7z进行解压缩,并返回解压缩进度和异常信息
  19. 王者服务器维护公告2月,王者荣耀2月22日体验服停机更新公告 英雄调整
  20. #RunJS# 最少代码的瀑布流实现

热门文章

  1. ios plist文件创建和简单读写
  2. python基础学习_01变量
  3. 亲爱的老狼-超链接的运用方式
  4. Datax从入门到精通03--Kerberos认证问题处理
  5. 安卓 SDK 开发使用 VirtualAPK 实现插件化
  6. Nvidia Jetson NX配置教程 for 阿福哥
  7. gifcam使用缩小内存_GifCam怎么用?GifCam使用教程
  8. 最新美团代付源码+支持多模板/多支付通道/全开源
  9. 长知识啦——自己动手写分类模型
  10. Dubbo + Zipkin + Brave 实现全链路追踪