下面我们通过一个简单例子来梳理数据清理步骤,也可以直接打开我的项目查看源代码;
1.收集数据
首页我们要加载项目里的数据集,代码如下:
import pandas as pd
df = pd.read_csv('animals.csv')
2.评估数据
在这一步我们需要查看数据集数据来评估数据集,评估数据集可通过多种方法结合评估数据,通常有head()、info()、describe()、value_counts()、sum()、duplicated();当然这只是简单评估方法,在比较复杂的情景下,可能需要查询数据某个字段的是否有缺失值,或者某些字段在某种情况才有异常值,需要单独刷选出来检查,或者是在某个时间段的数据有问题,不同情况不同分析评估。
本例子比较简单,我们这里只需要用head()来评估数据就行,代码如下:
从上图我们可以看出数据集存在以下质量问题,我们记录下来:
质量
- 每个动物名称前面的 bb
- 体重和脑重量中小数点使用 ! 而不是 .
3.清理数据
清理数据前,我要copy一份数据进行清理
df_clean = df.copy()
在这里我们就要通过上个流程说的步骤来进行清理数据,如果有不清楚的可以会看我上个流程写的内容(清理流程一)
定义
- 使用字符串分割,删除每个动物名称前面的 'bb'
- 在体重和脑重量两列,将 ! 替换为 .
代码
# 使用字符串分割,删除每个动物名称前面的 'bb'
df_clean['Animal'] = df_clean['Animal'].str[2:]
# 在体重和脑重量两列,将 ! 替换为 .
df_clean['Body weight (kg)'] = df_clean['Body weight (kg)'].str.replace('!', '.')
df_clean['Brain weight (g)'] = df_clean['Brain weight (g)'].str.replace('!', '.')
测试
重新使用head() 查看数据集是否清理好
df_clean.Animal.head()
注意:代码在这里我们数据清理步骤已完成,在这里大家也可以把清理步骤使用多个定义、代码 和 测试 标题来进行清理,为什么呢?因为,我们数据往往不止质量问题,也有可能有整洁度问题,实际上,你可以立即进行定义、编码和测试。如果你需要清理许多质量和整洁度问题呢?使用多个定义、代码 和 测试 标题这种顺序来清理一个一个的问题,这样结构就比较清晰,也不容易忽略某个问题。
下面我们重新清理,上面评估出的问题有2个,下面我们使用2个定义、代码 和 测试来进行清理数据,
清理2
- 每个动物名称前面的 bb
定义
使用字符串分割,删除每个动物名称前面的 'bb' 。
代码
df_clean['Animal'] = df_clean['Animal'].str[2:]
测试
df_clean.Animal.head()
- 体重和脑重量中小数点使用 ! 而不是 .
定义
在体重和脑重量两列,将 ! 替换为 .
代码
df_clean['Body weight (kg)'] = df_clean['Body weight (kg)'].str.replace('!', '.')
df_clean['Brain weight (g)'] = df_clean['Brain weight (g)'].str.replace('!', '.')
测试
df_clean.Animal.head()