使用Pandas: str.replace() 进行文本清洗

  • 时间:
  • 浏览:0
  • 来源:彩神欢乐生肖_神彩欢乐生肖官方

你你你这名比赛数据含有另有另一个特征叫做 "item_description",大致是某些商品描述,比如哪此以后 买的、新旧程度如保、哪此牌子的等等。将会大累积都不 Mercari你你你这名网站(你你你这名类似于于国内的二手商品交易网站)上的用户我本人填的商品描述,也不 是极尽杂乱之能事,会老出也不 夸张的符号,比如另另有另一个:

前段时间参加了Kaggle上的Mercari Price Suggestion Challenge比赛,收获良多,过些以后 准备进行某些全面的总结,本篇文章先谈另有另一个比赛中用到的小技巧。

str.replace()的作用基本与re.sub()等同,区别在于re.sub()一次可以处理另有另一个字符串,而str.replace()还还要一次处理一整个Series,因而速率要高也不 。str.replace()的正式形式为 Series.str.replace(pat, repl) ,其中pat为我想要寻找的模式,一般为正则表达式,repl为要替换进去的字符串或函数。

1) 将1.1050000变为1.101,即将上方的"0"加带。

将会是某些比较繁复的情形,则还要将repl自定义为函数:

上例中将repl定义为另有另一个匿名函数,m.group(0)为匹配到的所有字符串,注意其不让匹配到1.000的情形,将会pat中存在[1-9]。

上例中使用str.maketrans()辦法 指定我想要删除的字符,再用translate()删除。这是python 3的写法,python 2中可直接使用translate()

由此,本文结合比赛中的例子介绍了几种清洗文本的辦法 ,另外Pandas中还提供了某些也不 有用的处理文本的辦法 ,详见文档 Working with Text Data

3) 将0.0500kg转换为0.03kg。这里将会0.03你你你这名存在0,也不 可以用str.maketrans()了,将会会将所有0都删除。也不 这里用另有另一个正则表达式分别找到0.03和kg,再拼接起来:

/

另外的一大现象是用语规范不统一,比如 $1.5000$1.1 虽然是另有另一个意思,然而在对文本进行特征提取时就会被当成另有另一个特征,这会使特征变得过于稀疏,对模型的效果也会产生影响。所幸Pandas中提供了str.replace()你你你这名辦法 ,还还要高效处理此类现象。

2) 将1.000kg变为1kg,这里将会要去除的.0另有另一个字符存在上方,也不 无法用上方的rstrip()

5) 商品含有也不 衣服鞋子类似于的,一般都标有尺码,比如3",15”等。这里要把上方的尺码符号‘ ” ’提取出来并用“colon”表示,让模型识别出前面的数字3和15是代表尺码大小。

4) 将1.5000%转换为1 5000%, 可以做的目的是1.5000%将会会被转换为另有另一个词,而实际我想要提取的肯定可以5000%:

下面是十几个 简单的例子,X代表另有另一个Series,repl皆为字符串: