mysql数据清洗_如何用Mysql清洗数据
在数据分析中从获取数据到最后的完成数据分析报告,你要是问一个从事数据分析的人哪里最麻烦最费时间,十个里面有九个会回答你:清洗数据。
在清洗数据流程中,绝大多数分析师都会使用Python和R来处理,那如果还没有掌握Python和R的人呢?
事实上Excel和Mysql之类的工具也是可以的,Excel对于大一点的文件处理的较为吃力。其实我们日常用来处理统计数据的Mysql也可以进行数据清洗的工作,接下来我就用完之前做的关于什么值得买跑鞋板块的数据分析为例来简单介绍一下怎么用Mysql进行数据清洗。
一、首先爬取网页上的数据
这方面我推荐一下我的朋友 @陈大欣零基础如何学爬虫技术?www.zhihu.com
介绍的Web Scraper工具,可以轻松让没有编程基础的小白爬取95%以上的网页上的内容。
首先分析一下页面,我们需要爬取哪些内容:跑鞋的品牌、型号
爆料分类
价格
值、不值、收藏和评论数
爆料时间
卖家
爆料人
具体爬取过程不表
二、预览分析数据
看起来好像很正常,点开仔细看一下。
标题部分被整个抓下来了,其中我们需要的分类、品牌和价格都在一个单元格里面,需要把它们分开来。
上传时间和商家在同一个单元格里面,需要分开来。
三、在Mysql进行数据清洗、提取
把数据导入NavicatNavicat for MySQL如何导入数据表www.formysql.com
参考网上的教程把爬下来的csv文件导入Navicat
统计男鞋和女鞋的爆料数量
Alter table `runningshoe (1)` add woman int;
update `runningshoe (1)` set woman=1
where name like "%女%"
加入一列命名为Woman,描述中出现一次"女"就记一次女鞋爆料,男鞋同理。
抽取出跑鞋品牌信息
首先我分析了一下数据,和众多爆料数字不成正比的是,绝大多数爆料都是集中在少数几个品牌上。95%的爆料,来自于20个大品牌。
我做了一个叫做"品牌"的连接表格来进行品牌信息的归类
左边是它有可能出现的名字,右边是我定义的名字。
update `runningshoe (1)`, `品牌`
set brand=品牌.`实际名字`
where `name` like CONCAT('%',品牌.`查询名字`,'%')
以上品牌涵盖了97%以上的爆料剩余的被归入"Others"了抽取价格信息
事实上这个步骤比我想象中的复杂
关于价格的爆料信息有三种一种是国内的爆料,单位是人民币,第二种是美国海淘的爆料有美金有人民币,第三种是日本海淘的爆料,有日元有人民币。
首先我们把最后一个空格后所有有关价格的信息都提取出来再处理。
Alter table `runningshoe (1)` add `price` varchar(255) ;
Update `runningshoe (1)` SET `price`=SUBSTRING_INDEX(name,' ',-1)
结果如下
再对price列下的字符进行清理
Update `runningshoe (1)` SET price=(SUBSTRING_INDEX(`price`,'X',1))
如选取元前的字符,选取'¥'字符后的字符,去掉')'
最后得到价格信息
更多推荐
所有评论(0)