这一章学习的是文本数据,主要学习的是正则表达式的应用。
正则表达式
我觉得这张表非常有用。
还有这张简写字符集表
文本处理五类操作
拆分:str.split方法,能够把字符串的列进行拆分,其中第一个参数为正则表达式,可选参数包括从左到右的最大拆分次数 n ,是否展开为多个列 expand 。
合并:关于合并一共有两个函数,分别是 str.join 和 str.cat 。 str.join 表示用某个连接符把 Series 中的字符串列表连接起来,如果列表中出现了非字符串元素则返回缺失值。
匹配:
(1)str.contains: 支持正则表达式,用于返回每个字符串是否包含正则模式的布尔序列。
(2)str.startwith、str.endswith: 不支持正则表达式,用于返回每个字符串以给定模式为开始和结束的布尔序列。
(3) str.find和str.rfind: 分别返回从左到右和从右到左第一次匹配的位置的索引,未找到返回-1。
替换:str.replace
提取:str.extract只匹配一次,str.extractall匹配所有符合条件的字符串。
练习
1.1 将 year 列改为整数年份存储。
可以利用to_numeric函数来对字符进行快速转换。
1.2 将 floor 列替换为 Level, Highest 两列,其中的元素分别为 string 类型的层类别(高层、中层、低层)与整数类型的最高层数。
先建立正则表达式,再利用str.extract函数进行提取。
1.3 计算房屋每平米的均价 avg_price ,以 ***元/平米 的格式存储到表中,其中 *** 为整数。
2.1 计算每一个 Episode 的台词条数。
先将每个列名的空格去掉。再对‘Season’,‘Episode’字段进行分组。
2.2 以空格为单词的分割符号,请求出单句台词平均单词量最多的前五个人。
可以使用split函数将Sentence分割成单词再用len统计单词数,随后按Name列分组求出均值,再排序。
2.3 若某人的台词中含有问号,那么下一个说台词的人即为回答者。若上一人台词中含有 n 个问号,则认为回答者回答了 n 个问题,请求出回答最多问题的前五个人。
利用shift函数将问句与后一个人相匹配。
再根据'?'进行统计,求和后排序。