文本数据

第7章文本数据

一、string类型的性质
1.string与object的区别

1 字符存取方法(string accessor methods,如str.count)会返回相应数据的Nullable类型,而object会随缺失值的存在而改变返回类型
理解:其实还是之前讨论的那个问题,object类型的数据返回值类型会发生变化,而string则不会发生变化,但是据我现在的了解,Nullable中默认的好像只有Int类型 boolean类型 以及string类型 当这些类型数据值发生变动时 数据类型不会发生变化,这有个好处就是在数据清洗中可以避免很多不必要的麻烦,而object类型会发生变化,这一点我个人理解就是,如果知道返回的数据类型知道还好,大不了在变化统一,但是要是不知道这东西变成啥了,对于以后数据的处理就比较那麻烦

2 某些Series方法不能在string上使用,例如Series.str.decode(),因为存储的是字符串而不是字节

3 string类型缺失值存储和运算时,类型会广播**为pd.NA,**而不是浮点型np.nan

(其余全部内容在当前版本下完全一致,但迎合Pandas的发展模式,我们仍然全部用string来操作字符串)

2 string类型的转换
如果将一个其他类型的容器直接转换string类型可能会出错
在这里插入图片描述
当下正确的方法是分类转换,先转为str型object, 再转为string类型
理解 就是不能直接的定义strng类型,需要找个中间变量替换一下
在这里插入图片描述

二 拆分与拼接

(a)分隔符与str的位置元素读取
在这里插入图片描述
这里需要注意
spilt后的类型是object,因为现在Series中的元素
已经不是string,而包含了list,且string类型只能含有字符串
对于str方法可以进行元素的选择,如果该单元格元素是列表,那么str[i]表示取出第i个元素,如果是单个元素,则先把元素转为列表再取出
在这里插入图片描述
2 其他参数
expand参数控制了是否将列拆开,n参数代表最多分割多少次
在这里插入图片描述
在这里插入图片描述
具体含义见网站
https://blog.csdn.net/weixin_40161254/article/details/95321858

理解
据我先现在的了解 这个str.split主要是进行分割用的,他会依分隔符对数据进行分割,有一个参数是进行切割次数的规定,而expend更像是将数据做了一个表格。
2 str.cat方法
1 不同对象的拼接模式
cat方法对于不同对象的作用结果并不相同,其中的对象包括:单列、双列、多列

1 对于单个Series而言,就是指所有的元素合并为一个字符串
在这里插入图片描述
从这图中可以看出0 1 2这三个选项的的字符出内容被拼接到了一起

在这个命令中有两个参数sep和na_rep,sep是作为分隔符号的参数,而na_rep,是作为缺省值的补充值而存在的
在这里插入图片描述
对于两个Series合开而言,是对应索引的元素进行合并
在这里插入图片描述
在这里插入图片描述
**这个操作还可以将两个字符串中的元素进行拼接,也就是对应的元素进行组合
**
当操作对象是两个字符串的时候,也可以设置sep,和na_rep命令来进行替换。
在这里插入图片描述
多列拼接可以分为表的拼接和多Series拼接

1 表拼接
在这里插入图片描述
2 多个Series拼接
在这里插入图片描述
2 cat中的索引对齐
当前版本中,如果两边合并的索引不相同,且未指定join参数,默认为左连接,设置join=‘left’
在这里插入图片描述
理解:
其实就是当俩个Series的字符串进行拼接的时候,一般默认为左连接,也就是说谁在str.cat操作的外面,索引号就一谁为准

替换

广义上的替换,就是指str.replace函数的应用,fillna是针对缺失值的替换,上一章已经提及

提到替换m就不可避免地接触到正则表达式,这里默认读者已经掌握常见正则表达式知识点,若对其还不了解可以通过
网址:(https://regexone.com/)

  1. str.replace的常见用法
    2.
    第一个值写r开头的正则表达式,后一个写替换字符串
    在这里插入图片描述
    2 子组与函数替换
    通过正整数调用子组(0返回字符本身,从1开始才是子组)
    在这里插入图片描述
    看到这个结果和表达式 我一脸懵逼 什么情况这是啥 ,然后重温一下正则表达式的知识点
    好像正则表达式就是类似于一系列的操作符号,但是在教程中这些操作符对应着不同的操作结果
    在这里插入图片描述
    我现在貌似懂了 正则表达式类似于一个可以寻找字符串相同的项用他们去做匹配,就上完了前4节课 后面的在补吧

利用?<…>表达式可以对子组命名调用

在这里插入图片描述
**理解 **
我一开始有点懵,这是什么情况,一样,后来才明白,人家只不过是介绍了,这个替换的两种方法而已 智障了

3 关于str.replace的注意事项
首先,要明确str.replace和replace并不是一个东西
str.replace针对的是object类型或string类型,默认是以正则表达式为操作,目前暂时不支持DataFrame上使用

replace针对的是任意类型的序列或数据框,如果要以正则表达式替换,需要设置regex=True,该方法通过了字典可支持多列替换,但现在由于string类型的初步引入,用法上出现了一些问题,这些issue有望在以后的版本中写u古

str.replace赋值参数不得为pd.NA
这听上去非常不合理,例如对满足某些正则条件的字符串替换为缺失值,直接更改为缺失值在当下版本就会报错。
在这里插入图片描述
此时,可以先转为object类型再赚回来,曲线救国:
在这里插入图片描述
至于为什么不用replace函数中的regx替换(但string类型,replace的非正则替换是可以的),原因在下面一条

1 对于string类型Series,在使用replace函数时不能使用正则表达式替换
bug现在还未修复

在这里插入图片描述
可以从图中清楚的看出被替换掉了

3 string类型序列如果存在缺失值,不能使用replace替换
在这里插入图片描述
四 字符匹配与提取

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值