愛數科是一個拖拽式資料科學科研和教學一體化平台,內建數十行業數千資料集、科研案例模闆。幫助科研人員快速使用大資料和人工智能技術開展研究。支援高校開展大資料通識課程教學。幫助非專業人員進行資料分析和生成資料分析報告。
本案例使用愛數科(idatascience)的字元串比對、字元串分割、字段重命名等元件,對從當當網抓取的機器學習相關的圖書資訊進行資料清洗,處理為符合我們要求的資料。本案例适合作為大一大資料通識導論課程資料清洗子產品的教學案例。
1. 讀資料表
首先,我們讀取原始資料。資料集各字段的介紹可參考:
http://idatascience.cn/dataset-detail?table_id=2
可以看出原始資料中有許多問題,例如目前價格帶有人民币符号'¥',評論數含有文本等等。
2. 提取價格數值
我們去掉目前價格這一列中的 '¥' 符号,使用正規表達式
\d{1,4}\.{0,1}\d{0,2}
将目前價格中的數值提取出來,儲存為新的一列
目前價格_match
。
3. 提取評論數
對于評論數這一列使用正規表達式
\d{1,4}\.{0,1}\d{0,2}
提取數值,儲存為
評論數_match
。
4. 提取星級數值
對于星級這一列使用正規表達式
\d{1,4}\.{0,1}\d{0,2}
提取數值,儲存為
星級_match
。
5. 星級數值除以20
接着将提取出的星級數值除以20,将取值範圍轉換為[0,5]。
可以看到,經過列數值計算後的資料更适合資料的模組化計算和可視化分析了。
6. 出版資訊字元串分割
接下來我們處理出版資訊這一列,從原始資料中可以看到,這一列主要包含三個資訊,分别是作者、出版日期、出版社。它們以“/”分隔,并且存放在一個資料單元中,我們将它們分别取出,然後單獨存為三列。
7. 書名去掉【】
書名資訊中混合着簡介資訊,觀察原始資料中書名一列,能找到一些規律。除去一些包含在 【】和 [] 中間的标注資訊,剩餘的内容中書名和其他内容基本是由空格隔開的。是以我們首先将【】和 [] 去掉,然後按照空格分隔字元串,第一個内容便是書名。
首先在
書名
一列中去掉【】中的資訊,并将結果儲存為
書名_replace
:
8. 書名去掉[]
接着在
書名_replace
一列中去掉[]中的資訊,儲存為
書名_replace_replace
:
9. 書名字元串分割
去除方括号【】和[]後我們把
書名_replace_replace
列中文字根據空格進行字元串分割,并進行分列。
10. 删除不需要的資料列
在原始資料中和上面操作生成資料中有許多備援資料列,我們把不需要的資料列都删除掉。
11. 資料字段重命名
最後,我們将資料集各列特征名稱修改為各列資料的資訊種類。
原始資料集中含有文字數字混雜、量綱不同等等問題。經過資料清理,原始資料集已經适用于進一步的模組化計算和可視化處理了。
- 案例線上位址:http://idatascience.cn/case-detail?experimentId=320