问题与练习
1. 问题
【问题一】 str对象方法和df/Series对象方法有什么区别?
series,只是一个一维数据结构,它由index和value组成。
dataframe,是一个二维结构,除了拥有index和value之外,还拥有column。
dataframe由多个series组成,无论是行还是列,单独拆分出来都是一个series。
str.replace针对的是object类型或string类型,默认是以正则表达式为操作,目前暂时不支持DataFrame上使用
replace针对的是任意类型的序列或数据框,如果要以正则表达式替换,需要设置regex=True,该方法通过字典可支持多列替换
【问题二】 给出一列string类型,如何判断单元格是否是数值型数据?
str.contains(r'-?([0-9]\d*)(\.\d+)?$')
【问题三】 rsplit方法的作用是什么?它在什么场合下适用?
Python rsplit() 方法通过指定分隔符对字符串进行分割并返回一个列表,默认分隔符为所有空字符,包括空格、换行(\n)、制表符(\t)等。类似于 split() 方法,只不过是从字符串最后面开始分割。
适用于分割字符信息
【问题四】 在本章的第二到第四节分别介绍了字符串类型的5类操作,请思考它们各自应用于什么场景?
拆分: 某个字符串series里有相同的分隔符的时候,可以用split来分开
拼接: 理解为拆分的反操作,想用某个符号作为分隔符将几个字符串连起来的时候
替换: 在数据清洗的时候作用很大,可以使用正则表达式去除某些不需要的字符,数字之类的
字串匹配:作用同下,但是不用提取出来,只是看里面有没有。
字串提取:当字符串series有一定的规律的时候,可以用来提取某一部分,例如年月日可以提取年,就是提取自己需要的模式
2. 练习
【练习一】 现有一份关于字符串的数据集,请解决以下问题:
(a)现对字符串编码存储人员信息(在编号后添加ID列),使用如下格式:“×××(名字):×国人,性别×,生于×年×月×日”
(b)将(a)中的人员生日信息部分修改为用中文表示(如一九七四年十月二十三日),其余返回格式不变。
实现思路是分割对应的字符,然后替换
(c)将(b)中的ID列结果拆分为原列表相应的5列,并使用equals检验是否一致。
【练习二】 现有一份半虚拟的数据集,第一列包含了新型冠状病毒的一些新闻标题,请解决以下问题:
(a)选出所有关于北京市和上海市新闻标题的所在行。
(b)求col2的均值。
(c)求col3的均值。