数据清洗用python处理缺失值_Python数据挖掘005-数据清洗

数据预处理中的数据清洗是关键步骤,包括处理缺失值和异常值。常用的缺失值处理方法有删除、插补(如均值、中位数、众数、最近邻等)。在Python中,可以使用pandas的fillna进行处理。异常值处理需谨慎,可能包含重要信息。通过拉格朗日插值法可以进行异常值插补。
摘要由CSDN通过智能技术生成

数据预处理包括有数据清洗,数据集成,数据转换,数据规约等过程。

数据预处理的目的是提高数据的质量,同时让数据更好的适应特定的挖掘技术或工具。

一般的数据挖掘过程中,数据预处理工作量占到了整个过程的60-70%。

数据清洗主要是删除原始数据集中的无关数据,重复数据,平滑噪声数据,还要筛选掉与挖掘主体无关的数据,处理缺失值,异常值等。

1. 缺失值处理

三种方法:删除含有缺失值的样本或属性,数据插补,不处理。

删除含有缺失值的样本或属性应该要慎用,特别是样本量很少,或属性很少的情况下,删除可能会丢掉一些重要信息。

7a794103a9b4

image.png

比较常用的是均值/中位数/众数插补,固定值插补,最近邻插补法。用pandas中的fillna就可以处理。

还有比如拉格朗日插值法:

from scipy.interpolate import lagrange #导入拉格朗日插值函数

data=pd.read_excel(r"E:\PyProjects\DataSet\PyMining\Data\chapter4\demo\data\catering_sale.xls")

data[u'销量'][(data['销量'] < 400) | (data['销量'] > 5000)] = None #过滤异常值,将其变为空值

data.isnull().sum()

#自定义列向量插值函数

#s为列向量,n为被插值的位置,k为取前后的数据个数,默认为5

def ployinterp_column(s, n, k=5):

# 使用缺失值前后各5各未缺失的数据参与建模

y = s[list(range(n-k, n)) + list(range(n+1, n+1+k))] #取数

y = y[y.notnull()] #剔除空值

return lagrange(y.index, list(y))(n) #插值并返回插值结果

#逐个元素判断是否需要插值

for i in data.columns:

for j in range(len(data)):

if (data[i].isnull())[j]: #如果为空即插值。

data[i][j] = ployinterp_column(data[i], j)

2. 异常值处理

异常值并不能一删了之,有些异常值可能含有重要信息。

7a794103a9b4

image.png

参考资料:

《Python数据分析和挖掘实战》张良均等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值