天天看點

資料清洗:字元串處理

在拿到資料之後,一般會有一個資料清洗的工作,尤其是髒資料,光整理的時間可能就會耗掉整個分析流程的大部分。

很多人以為最費時間的是資料模組化,其實不然,前期的資料擷取以及資料清洗才是最花時間的過程。

還是舉個例子,現有已從天貓上爬下來的若幹商品資訊文本,包括名稱、規格、價格、準許文号、廠家等。

資料清洗:字元串處理
資料清洗:字元串處理

但發現資料根本就用不了,因為·有幾個問題十分突出:

其一:名稱、規格混合在一起,比如“湯臣倍健蛋白粉乳清高蛋白質營養粉男女孕婦增強免疫力早餐豆奶粉1kg“;

其二:名稱太長,包含很多我們根本不需要的備援資訊,還是這個‘湯臣倍健蛋白粉乳清高蛋白質營養粉男女孕婦增強免疫力早餐豆奶粉1kg“’,其實隻要“湯臣倍健蛋白粉”這個名字就OK了。

那我們應該怎麼做呢?

1、分離名稱、規格

a.如果名稱裡 名稱、規格之間的符号可唯一識别(非普通空格)

str_split()
           

b.如果不可唯一識别,注意要名稱列裡的規格與規格列裡的規格内容基本一緻,查找規格在名稱中的出現的位置,并以此斷開。

str_locate(name,spec)

str_sub(name,1,L[,1])

str_trim(name,side = 'both')
           

c.觀察到規格一般是以數字開頭,而名稱鮮有數字(999,37),對于這樣的,可以直接使用正規表達式查找數字所在位置,以此分開。

str_locate(name,'\\d')
           

2、精簡名稱

比如天貓商品:ON歐普特蒙金裝乳清蛋白粉5磅 whey健身男增肌粉健肌粉蛋白質粉

通過觀察資料确定一系列關鍵詞(如保健品類的液、粉、膠);

找到這些關鍵詞在原字段中的位置,找不到取999,求min,該例中min(999,13,999)=13;

取原字段min前(含自身)的資料,就可以得到相應的精簡名稱:“ON歐普特蒙金裝乳清蛋白粉”。

如果不懂點竅門,處理這類爬蟲遺留問題是很麻煩的,我相信一定有人一條一條改了拉倒,但人力再不值錢但也不能這樣浪費,效率低且浪費人家生命。

不過最好的還是,在寫爬蟲代碼就把裡面容易實作的考慮進去,起碼在存儲資料的時候做到變量分離。

繼續閱讀