python在txt中的替换数据清洗_数据清洗

数据清洗是数据分析的基础工作,但是数据清洗占据了整个数据分析绝大部分的工作量。很多业务数据都是从各个渠道收集过来的,不可避免的有一些缺失数据、重复的数据、单位不统一的数据(比如体重,有的渠道收集的是kg,有的渠道收集的可能是斤)、甚至是明显错误的数据(比如人的年龄不可能是负数,但是收集上来的数据,年龄这个字段竟然有负值)等。

数据清洗的工作就是保证取得的数据尽可能干净、完整且符合逻辑,为后续的数据统计、分析、挖掘做好准备。

今天就以一个例子,讲一讲用python进行数据清洗的一些常用函数。

python在txt中的替换数据清洗_数据清洗_第1张图片

这是一家运动店的部分会员数据,第一列是会员的id号,第二列是会员的姓名,第三列是会员的注册日期,第四列是会员的年龄,第五列是会员所在的城市,第六列是会员的身高,第七列是会员的体重,第八列是会员的兴趣爱好。

我们发现这些数据有很多的空值,姓名有重复,体重的单位不一致,看起来非常的乱。现在我们就要对这些数据进行清洗。实际的业务远比我们现在看到的这张表复杂,数据维度可能多达五六十个,数据量可能也是千万级别的,如果仅仅用肉眼来观察,想要找到问题可以说是非常困难。

一、数据分列

name这一列包含firstname和lastname,我们可以把name拆分成两列,这样看起来更整洁。

python在txt中的替换数据清洗_数据清洗_第2张图片

二、删除重复项

删除重复值的时候,一定要选取能够识别为唯一性的列,且这一列确实能够代表唯一,这样可以避免删除掉正确值。

举个例子,身份证号码是唯一的,没有人的身份证号码是重复;手机号码也是具有唯一性,同一个手机号码不会被不同的两个人使用。

由于我们只是熟练使用函数,所以就用firstname和lastname这两列作为唯一性的判断,如果有重复的话就删除。实际上姓名完全有可能是重复的,同名的人很多。

python在txt中的替换数据清洗_数据清洗_第3张图片

python中使用drop_duplicates函数删除重复值,drop_duplicates有一个参数是keep,keep的默认值是first,也就是保留第一个出现的值,删除后面的重复值。如果参数keep='last'的话,就会删除最先出现的重复值,保留最后的值。

上面的例子中,keep默认是first,所以保留了第一个出现的Michal Jordan,第二个出现同一样的名字就被删除了。

三、处理空值

处理空值一般是删除或者填充。删除很好理解,就是直接将空值所在的行删除掉;填充的话,有很多方式,可以0值填充,也可以用平均值填充,还可以用出现频次最多的值填充。

我们先看删除,删除可以按照空值的个数删除,比如你有60个字段,如果其中有6个字段是空值的话就删除,可以用thresh = 6来实现;我们还可以选取特定的字段来删除,比如如果name有空值就删除,可以用subset = ['age']

python在txt中的替换数据清洗_数据清洗_第4张图片

因为我这个案例,身高后面带有单位,所以如果要用平均值填充的话,需要先替换掉单位,然后转换成int类型,再求平均值,所以看起来比较繁琐。实际上一般数值都不会有单位在后面,直接填充即可。

python在txt中的替换数据清洗_数据清洗_第5张图片

四、单位统一

weight这一列出现了kg和jin,我们需要将单位统一,比如将jin转换成kg。

转换后,我们发现weight这一列还有空值,如果空值需要用平均值填充,可以参考第三条。

python在txt中的替换数据清洗_数据清洗_第6张图片

五、清除空格

如果字段中包含空格,可以用strip函数去除

a794a30768b085363a537678e935f8fa.png

六、数值替换

city这一列上海有两种写法,一个是shanghai,一个是sh缩写,如果我们要将sh替换成shanghai,可以使用replace函数

python在txt中的替换数据清洗_数据清洗_第7张图片

七、大小写转换

firstname和hobby这两列,有的开头是大写,有的开头是小写,我们需要统一一下,这样看起来更整洁

python在txt中的替换数据清洗_数据清洗_第8张图片

八、更改数据格式

age这一类的数据类型是float,我们将这一列的数据转换成int

python在txt中的替换数据清洗_数据清洗_第9张图片

一些常用的数据清洗函数就介绍到这里。通过清洗后的数据,看起来比之前干净整洁多了。而且在清洗数据的过程,我们对这些数据会更加的熟悉。熟悉之后,结合业务,可能会有更深的理解。

案例文件直接点击下面链接下载:

https://github.com/songrenqing/Data_Analysis_File/blob/master/customer.xlsx

你可能感兴趣的:(python在txt中的替换数据清洗_数据清洗)