导读:此前的文章《一文看懂数据清洗:缺失值、异常值和重复值的处理》中,我们介绍了数据清洗的过程和方法,本文给出各步骤的详细代码,方便你动手操作。
作者:宋天龙
如需转载请联系大数据(ID:hzdashuju)
- 通过 pd.DataFrame 新建数据框。
- 通过 df.iloc[] 来选择特定的列或对象。
- 使用Pandas的 isnull() 判断值是否为空。
- 使用 all() 和 any() 判断每列是否包含至少1个为True或全部为True的情况。
- 使用Pandas的 dropna() 直接删除缺失值。
- 使用 sklearn.preprocessing 中的 Imputer 方法对缺失值进行填充和替换,支持3种填充方法。
- 使用Pandas的 fillna 填充缺失值,支持更多自定义的值和常用预定义方法。
- 通过 copy() 获得一个对象副本,常用于原始对象和复制对象同时进行操作的场景。
- 通过 for 循环遍历可迭代的列表值。
- 自定义代码实现了 Z-Score 计算公式。
- 通过Pandas的 duplicated() 判断重复数据记录。
- 通过Pandas的 drop_duplicates() 删除数据记录,可指定特定列或全部。
import pandas as pd # 导入Pandas库
import numpy as np # 导入Numpy库
from sklearn.preprocessing import Imputer # 导入sklearn.preprocessing中的Imputer库
# 生成缺失数据
df = pd.DataFrame(np.random.randn(6, 4), columns=['col1', 'col2', 'col3', 'col4']) # 生成一份数据
df.iloc[1:2, 1] = np.nan # 增加缺失值
df.iloc[4, 3] = np.nan # 增加缺失值
print(df)
col1 col2 col3 col4
0 -0.112415 -0.768180 -0.084859 0.296691
1 -1.777315 NaN -0.166615 -0.628756
2 -0.629461 1.892790 -1.850006 0.157567
3 0.544860 -1.230804 0.836615 -0.945712
4 0.703394 -0.764552 -1.214379 NaN
5 1.928313 -1.376593 -1.557721 0.289643
# 查看哪些值缺失
nan_all = df.isnull() # 获得所有数据框中的N值
print(nan_all) # 打印输出
# 查看哪些列缺失
nan_col1 = df.isnull().any() # 获得含有NA的列
nan_col2 = df.isnull().all() # 获得全部为NA的列
print(nan_col1) # 打印输出
print(nan_col2) # 打印输出
col1 col2 col3 col4
0 False False False False
1 False True False False
2 False False False False
3 False False False False
4 False False False True
5 False False False False
col1 False
col2 True
col3 False
col4 True
dtype: bool
col1 False
col2 False
col3 False
col4 False
dtype: bool