前言
工作中遇到的数据清洗过程,仅作记录。
1.清洗代码
1-1.清除表情符号、html网址、email ids、urls
def clean_data(data):
punct_tag = re.compile(r'[^\w\s]')
data = punct_tag.sub(r'', data)
html_tag = re.compile(r'<.*?>')
data = html_tag.sub(r'', data)
url_clean = re.compile(r"https://\S+|www\.\S+")
data = url_clean.sub(r'', data)
emoji_clean = re.compile("["
u"\U0001F600-\U0001F64F" # emoticons
u"\U0001F300-\U0001F5FF" # symbols & pictographs
u"\U0001F680-\U0001F6FF" # transport & map symbols
u"\U0001F1E0-\U0001F1FF" # flags (iOS)
u"\U00002702-\U000027B0"
u"\U000024C2-\U0001F251"
"]+", flags=re.UNICODE)
data = emoji_clean.sub(r'', data)
url_clean = re.compile(r"https://\S+|www\.\S+")
data = url_clean.sub(r'', data)
return data
1-2.清除所有格
def strip_possessives(text):
text = text.replace("'s", '')
text = text.replace('’s', '')
text = text.replace("\'s", '')
text = text.replace("\’s", '')
return text
1-3.将数字替换成
def clean_numbers(x):
x = re.sub("[0-9]{5,}", '#####', x)
x = re.sub("[0-9]{4}", '####', x)
x = re.sub("[0-9]{3}", '###', x)
x = re.sub("[0-9]{2}", '##', x)
return x
后记
有个很著名的论断:一个数据科学家80%的时间花在了数据清洗,20%的时间花在算法模型上面。数据清洗很像一个筛沙子的过程,通过整合筛选,筛出金子般的数据洞察/模型预测。不然的话,建模分析就是garbage in, garbage out (垃圾进,垃圾出)
经过实践, 即使通过简单的数据清洗,也能提升1-2%的模型指标。