数据探索之缺失值处理及代码实现
来源:互联网 发布:牛津英语词典软件 编辑:程序博客网 时间:2024/05/16 03:20
在数据挖掘中,前期数据预处理,会涉及到很多缺失值的处理问题。
现以python代码实现为例,看如何具体处理的。
所需python包
from pandas import Series, DataFrameimport pandas as pd
寻找缺失值
def FindFeactureNAorValue(data, feacture_cols, axis=0, value = 'NA', prob_dropFct = 0.95): ''' 函数说明:寻找每一个特征有多少value值,默认为:缺失值,及所占比率 输入:data——整个数据集,包括Index,target feacture_cols——特征名 prob_dropFct——大于这个比例,就丢掉该特征 输出:numValue——DataFrame index='feacture1', columns=['numnumValue', 'probnumValue'] dropFeacture_cols——要丢掉的特征列名 ''' #计算x中value值个数 def num_Value(x, value = 'NA'): if value == 'NA': return sum(x.isnull()) #寻找缺失值个数 else: return sum(x == value) #寻找某个值value个数 numValue = data[feacture_cols].apply(num_Value, axis=axis,args=[value]) numValue = DataFrame(numValue, columns = ['numValue']) nExample = data.shape[0] probValue = map(lambda x: round(float(x)/nExample, 4), numValue['numValue']) numValue['probValue'] = probValue #寻找缺失值大于prob_dropFct的特征 m, , ,. dropFeacture = numValue[numValue['probValue'] >= prob_dropFct] dropFeacture_cols = list(dropFeacture.index) return numValue,dropFeacture_cols
处理数值型特征缺失值
def FillNAorValueOfNum(data, numFct_cols, value = 'NA', replaceNA = 'mean'): ''' 函数说明:为数值变量填上缺失值,缺失值为特征均值,中位数,众数 输入:data——整个数据集,包括Index,target numFct_cols——数值特征名 value ——'NA'或-1,-1也有可能为NA replaceNA——'mean'、'mode'、'median' 输出:newData——DataFrame 替换value值 ''' #用均值、众数、中位数替换每一个特征缺失值或value值 def fillValue(x, value=-1, replaceNA='mean'): if replaceNA == 'mean': replaceValue = x.mean() if replaceNA == 'mode': x_mode = x.mode() if len(x_mode) > 1: replaceValue = x_mode[0] else: replaceValue = x_mode if replaceNA == 'median': replaceValue = x.median() replaceValue = x.mean() x[x == value] = replaceValue return x numData = data[numFct_cols] if replaceNA == 'mean': if value == 'NA': newData = numData.fillna(numData.mean(),inplace=True) else: newData = numData.apply(fillValue, axis = 0, args=(value, replaceNA)) if replaceNA == 'mode': if value == 'NA': newData = numData.fillna(numData.mode(),inplace=True) else: newData = numData.apply(fillValue, axis = 0, args=(value, replaceNA)) if replaceNA == 'median': if value == 'NA': newData = numData.fillna(numData.median(),inplace=True) else: newData = numData.apply(fillValue, axis = 0, args=(value, replaceNA)) return newData
处理类别型特征缺失值
from sklearn.preprocessing import LabelEncoderdef FillNAofCat(data, feacture_cols): ''' 函数说明:为类别变量填上缺失值,认为缺失值是新的一类 输入:data——整个数据集,包括Index,target feacture_cols——特征名 输出:catData——DataFrame 数值化后的类别特征样本 ''' catData = data[feacture_cols] catData = catData.fillna(value = -9999) #创建分类特征的标签编码器 jiushi字符串转化为数字 for var in feacture_cols: number = LabelEncoder() catData[var] = number.fit_transform(catData[var].astype('str')) return catData
def CatToDummy(data, catfct_cols): ''' 函数说明:类别变量转化为哑变量 输入:data——整个数据集,包括Index,target catfct_cols——类别特征名 输出:dummyCatData——DataFrame ''' catData = data[catfct_cols] dummyCatData = pd.get_dummies(catData,columns=catfct_cols, sparse = True) return dummyCatData
为每个特征缺失值标上标志位
def GetNewValueOfNAfeacture(data, feacture_cols): ''' 函数说明:为有缺失值的变量创建一个新的变量 对缺失值标志为1,否则为0 输入:data——整个数据集,包括Index,target feacture_cols——特征名 输出:newData——DataFrame类型 ''' newData = data[feacture_cols] for var in feacture_cols: if newData[var].isnull().any() == True: newData[var+'_NA'] = newData[var].isnull()*1 newData = newData.drop(feacture_cols,1) return newData
0 0
- 数据探索之缺失值处理及代码实现
- 机器学习实战-数据探索(缺失值处理)
- 机器学习实战-数据探索(缺失值处理)
- 机器学习实战 | 数据探索(缺失值处理)
- 数据预处理之缺失值处理
- 【R】数据缺失值处理
- sklearn 数据缺失值处理
- 数据中的缺失值处理
- 数据清洗---缺失值处理
- 数据挖掘-处理缺失值
- 数据预处理之缺失值、异常值处理
- 【数据建模 缺失值处理】缺失值的处理
- python实现数据预处理之填充缺失值
- 数据预处理-缺失值处理-拉格朗日插值
- R语言 处理缺失值数据
- 数据分析中的缺失值处理
- 数据分析中的缺失值处理
- 如何处理数据中的缺失值??
- C# 全局变量与局部变量
- mysql Source导入问题
- iOS 不同颜色之分段式圆环,段数不固定
- 通过AndroidTestCase来进行android 单元测试 part II
- android5.1+获取当前运行的app2
- 数据探索之缺失值处理及代码实现
- 升级win10后virtualBox无法使用
- 如何调用自己写的python函数?
- 泛读:CVPR2014:Discriminative Deep Metric Learning for Face Verification in theWild
- Xcode7--免证书真机调试
- vim 空格问题
- AlertDialog,ProgressDialog
- 【english】 see you again
- 【LeetCode-41】First Missing Positive