还原填充错误的缺失数据
手动方法 map() 函数映射
map(func)
import pandas as pd
import numpy as np
## -------
df = pd.DataFrame()
df['身高'] = [170, -1, 190, 150, 166]
df['体重'] = [50, 65, 70, 60, -1]
df.index = ['a', 'b', 'c', 'd', 'e'] ## 代表人名
## ----
结果:
很明显人的身高不可能是 -1 , 体重也不可能是 -1 , 这些数据属于有违反常识的数据值。 因此这里是误填充操作(或者可以理解成:异常值)
那么我们应该如何发现它们,并将其替换成缺失值形式呢?
df['身高'] = df['身高'].map(lambda x : x if x != -1 else None)
df['体重'] = df['体重'].map(lambda x : x if x != -1 else None)
df
结果:
自动方法 for循环 + replace() 替换
如果我们的数据列数较小的时候,我们可以进行手动填充,但是有许多数据列都存在缺失,那就需要进行自动填充以提高效率
columns = df[df == -1].columns.tolist()
for col in columns:
df[col].replace([-1], [np.nan], inplace=True)
df
注意: 这里使用的 np.nan 和之前使用的 None 均可以代表缺失数据,None (是 python中的 ) , np.nan(是numpy中的)
说明
以上这些心得是在特征工程中体会得到的,如果数据存在缺失,那么对缺失值的操作不是很方便,不妨先将缺失值用一些独特的值来填充,然后进行特征构建组合,这样的话可能会破坏原始的数据结构,但是却能打开数据各个特征之间的关系,可以结合具体业务展开。
使用方法:
1. 缺失数据检查
2. 缺失数据用独特的值填充 (一般使用-1, -9999,等)
3. 进行特征构建
4. 判断构架之后特征的相关性
5. 把数据还原会原始状态(本blog的内容)
以上方法结合具体的情况使用。