机器学习之数据预处理——缺失值

本文介绍了使用Pandas进行数据预处理时如何处理缺失值,包括使用常数值、变量、特定字符填充,以及向前、向后填充。还展示了插值法填充,包括线性插值、时间插值以及使用Scipy的多种插值方法。最后提到了将使用线性回归和拉格朗日插值法进一步处理缺失值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

机器学习之数据预处理——缺失值

本文先给大家介绍Pandas进行数据预处理会用到哪些方法,之后再介绍缺失值的处理方法。

1.Pandas基础

import pandas as pd
df1=pd.read_csv(r'miss.csv',encoding='gbk')

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述
2.数据预处理——缺失值处理

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

import pandas as pd
import numpy as np
#生成服从“0~1”均匀分布的随机样本值
df=pd.DataFrame(np.random.randn(7,3))
df.loc[0:4,1]=np.NaN#构造缺失值
df.loc[0:2,2]=np.NaN#构造缺失值

在这里插入图片描述

#使用常数值来填充缺失值
df.fillna(0)
#使用变量来填充缺失值
a=1
df.fillna(a)
#使用特定字符来填充缺失值
df.fillna('unknown')

在这里插入图片描述

#参考上一行的值填充,设定填充几个
df.fillna(method="ffill")
df.fillna(method="ffill",limit=2)

在这里插入图片描述

#参考下一行的值填充,设定填充几个
df.fillna(method="bfill")
df.fillna(method="bfill",limit=2)

在这里插入图片描述

#使用属性的平均值来填充缺失值
df.fillna({1:np.mean(df.loc[0:6,1]),2:np.mean(df.loc[0:6,2])})

3.数据预处理——插值法

在这里插入图片描述

import pandas as pd
import numpy as np
df=pd.DataFrame(np.random.randn(7,3),columns=("one","two","three"))
df.loc[1:4,"one"]=np.NaN#构造缺失值
df.loc[1:2,"two"]=np.NaN#构造缺失值
df.interpolate()

在这里插入图片描述

#插值法填充缺失值(前一个值和后一个值得平均数)
df.interpolate(method='values')

在这里插入图片描述

#如果index是时间
df.index=pd.date_range('20201001',periods=7)
df.interpolate(method='time')

在这里插入图片描述

import numpy as np
from scipy import interpolate
import pylab as pl

x=np.linspace(0,10,11)
#x=[  0.   1.   2.   3.   4.   5.   6.   7.   8.   9.  10.]
y=np.sin(x)
xnew=np.linspace(0,10,101)
pl.plot(x,y,"ro")

for kind in ["nearest","zero","slinear","quadratic","cubic"]:#插值方式
    #"nearest","zero"为阶梯插值
    #slinear 线性插值
    #"quadratic","cubic" 为2阶、3阶B样条曲线插值
    f=interpolate.interp1d(x,y,kind=kind)
    # ‘slinear’, ‘quadratic’ and ‘cubic’ refer to a spline interpolation of first, second or third order)
    ynew=f(xnew)
    pl.plot(xnew,ynew,label=str(kind))
pl.legend(loc="lower right")
pl.show()

在这里插入图片描述

下一节学习线性回归法填补缺失值和拉格朗日插值法

编写打磨课件不易,走过路过别忘记给咱点个赞,小女子在此(❁´ω`❁)谢过!如需转载请注明。

参考文献:

1.《对比EXCEL轻松学习Python数据分析》

2.《Python数据分析与数据化运营》

3.https://blog.csdn.net/oxuzhenyi/article/details/77971330


### 数据预处理缺失值处理方法数据预处理阶段,处理缺失值是一项重要任务。不同的场景下可以选择不同策略来应对这个问题。 #### 使用 Pandas 和 NumPy 进行基础操作 对于简单的缺失值删除或初步筛选,Pandas 提供了一些便捷函数。`dropna()` 方法可以直接移除含有任何 NaN 数据条目;而 `fillna()` 则允许指定固定数或是基于某种逻辑填充这些位置[^2]: ```python import numpy as np import pandas as pd # 创建带有缺失值数据序列 data = pd.Series([1, np.nan, 3, np.nan, 5]) # 删除所有含NaN的记录 cleaned_data_drop = data.dropna() # 或者用均填补缺失值 mean_value = data.mean() filled_with_mean = data.fillna(mean_value) print(cleaned_data_drop) print(filled_with_mean) ``` #### 应用统计学原理——贝叶斯推断法 当面对较为复杂的情况时,可以借助于概率论的知识来进行更加精细的操作。例如利用贝叶斯理论框架下的参数估计技术去预测那些未知部分最有可能取什么具体数[^1]。这种方法不仅能够考虑到已知观测之间的关系模式,还能够在一定程度上反映不确定性程度。 #### Scikit-Learn 中集成工具的应用 Scikit-learn 是 Python 生态系统里非常流行的一个机器学习库,在其内部也包含了专门用于解决此类问题的功能模块—Imputer 类(现已被 SimpleImputer 替代),它可以方便地实现多种类型的插补方式,如平均数/众数替换、K近邻算法甚至是迭代建模等高级手段[^4]: ```python from sklearn.impute import SimpleImputer import numpy as np X = [[np.nan, 2], [6, np.nan], [7, 6]] imp_mean = SimpleImputer(missing_values=np.nan, strategy='mean') transformed_X = imp_mean.fit_transform(X) print(transformed_X) ``` 以上就是几种常见的针对结构化表格型数据集中存在的缺失项所采取的不同层次上的解决方案概述。每种方案都有各自适用范围及优缺点所在,实际应用过程中需根据具体情况灵活选用最适合的方式组合起来使用
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值