需求背景
处理特征的时候经常会drop掉很多缺失率较大的值,比较少的时候就点名删除就好了。
但是这次遇到三百多个特征,点名点到猴年马月,一个个搞太麻烦,懒惰是人类进步的阶梯,于是封装了一个函数,后续也可以复用了
代码如下
def drop_null(data,percent):
'''
data:数据
percent:缺失比例达到多少需要剔除
'''
null_val_sums = data.isnull().sum() #统计每个列有多少缺失值
per_null = list(null_val_sums.values / len(df_data)) #计算缺失率
no_null_name = []
feature_name = list(null_val_sums.index)
for i in range(len(per_null)):
if per_null[i] < percent:
no_null_name.append(i)
newList = []
for index in no_null_name:
newList.append(feature_name[index])
for aVal in newList:
feature_name.remove(aVal)
data_drop = data.drop(feature_name,axis=1)
return data_drop
df_data = drop_null(df_data,0.1)
使用需要填入数据,和缺失比例即可