爱数科(iDataScience)是一个拖拽式数据科学科研和教学一体化平台,集成数十行业数千数据集、科研案例模板。帮助科研人员快速使用大数据和人工智能技术开展研究。支持高校开展大数据通识课程教学。帮助非专业人员进行数据分析和生成数据分析报告。登录网址 www.idatascience.cn
本案例使用爱数科(idatascience)的字符串匹配、字符串分割、字段重命名等组件,对从当当网抓取的机器学习相关的图书信息进行数据清洗,处理为符合我们要求的数据。本案例适合作为大一大数据通识导论课程数据清洗模块的教学案例。
首先,我们读取原始数据。数据集各字段的介绍可参考:
http://idatascience.cn/dataset-detail?table_id=2
可以看出原始数据中有许多问题,例如当前价格带有人民币符号'¥',评论数含有文本等等。
我们去掉当前价格这一列中的 '¥' 符号,使用正则表达式\d{1,4}\.{0,1}\d{0,2}
将当前价格中的数值提取出来,保存为新的一列当前价格_match
。
对于评论数这一列使用正则表达式\d{1,4}\.{0,1}\d{0,2}
提取数值,保存为评论数_match
。
对于星级这一列使用正则表达式\d{1,4}\.{0,1}\d{0,2}
提取数值,保存为星级_match
。
接着将提取出的星级数值除以20,将取值范围转换为[0,5]。
可以看到,经过列数值计算后的数据更适合数据的建模计算和可视化分析了。
接下来我们处理出版信息这一列,从原始数据中可以看到,这一列主要包含三个信息,分别是作者、出版日期、出版社。它们以“/”分隔,并且存放在一个数据单元中,我们将它们分别取出,然后单独存为三列。
书名信息中混合着简介信息,观察原始数据中书名一列,能找到一些规律。除去一些包含在 【】和 [] 中间的标注信息,剩余的内容中书名和其他内容基本是由空格隔开的。所以我们首先将【】和 [] 去掉,然后按照空格分隔字符串,第一个内容便是书名。
首先在书名
一列中去掉【】中的信息,并将结果保存为书名_replace
:
接着在书名_replace
一列中去掉[]中的信息,保存为书名_replace_replace
:
去除方括号【】和[]后我们把书名_replace_replace
列中文字根据空格进行字符串分割,并进行分列。
在原始数据中和上面操作生成数据中有许多冗余数据列,我们把不需要的数据列都删除掉。
最后,我们将数据集各列特征名称修改为各列数据的信息种类。
原始数据集中含有文字数字混杂、量纲不同等等问题。经过数据清理,原始数据集已经适用于进一步的建模计算和可视化处理了。