缺失值处理

处理思路

在数据预处理过程中,难免会有数据的确实情况,无论是自己爬虫获取的还是从公开数据源上获取的数据集,都不能保证数据集是完全准确的,难免会有一些缺失值。而以这样数据集为基础进行建模或者数据分析时,缺失值会对结果产生一定的影响,所以提前处理缺失值是十分必要的。

常用的处理思路主要有:

  1. 填充处理:数值变量、类别变量、时间序列
  2. 删除处理:按行删除、按列删除
  3. 不做处理

一、填充处理

常用的填充方法有:

  • 统计量填充:如均值、中位数、众数、最值等
  • KNN填充
  • 预测填充

pandas中用于填充缺失值的方法:
df.fillna()参数解释:
在这里插入图片描述

对于数值型变量

1 统计量填充:

**均值填充:**
缺点:容易受到异常值的影响
df[col].fillna(value=df[col].mean(),inplace=True)**中位数填充**
df[col].fillna(value=df[col].median(),inplace=True)**众数填充**
缺点:众数结果可能有多个,需要取第一个df.mode(numeric_only=False)[0]
df[col].fillna(value=df[col].mode()[0],inplace=True)**最大值填充**
df[col].fillna(value=df[col].max(),inplace=True)**最小值填充**
```python
df[col].fillna(value=df[col].min(),inplace=True)

2 填充KNN数据
pip install fancyimpute
填充近邻的数据,先利用knn计算临近的k个数据,然后填充他们的均值。(安装fancyimpute)除了knn填充,fancyimpute还提供了其他填充方法

缺点:基于欧式距离找找最相邻的K个点的均值做填充,不能填充类别变量,并且进入KNN模型的数据也不能有非数值变量。

import pandas as pd
import numpy as np
from fancyimpute import KNN
data = pd.DataFrame([[3, 2, 4, 0],[3, np.nan, 3, 1],[5, np.nan, np.nan, 1],[5, 5, 3, 4]],columns=list('ABCD'))
print(data)
# fancyimpute填补缺失值时会自动删除列
data = pd.DataFrame(KNN(k=6).fit_transform(data),columns=data.columns)print(data)

3 预测填充

from sklearn.ensemble import RandomForestRegressordef set_missing_ages(df):#把数值型特征都放到随机森林里面去,除了Age其他四个特征均无缺失值age_df=df[['Age','Fare','Parch','SibSp','Pclass']]known_age = age_df[age_df.Age.notnull()].as_matrix()unknown_age = age_df[age_df.Age.isnull()].as_matrix()y=known_age[:,0]#y是年龄,第一列数据x=known_age[:,1:]#x是特征属性值,后面几列rfr=RandomForestRegressor(random_state=0,n_estimators=2000,n_jobs=-1)#根据已有数据去拟合随机森林模型rfr.fit(x,y)#预测缺失值predictedAges = rfr.predict(unknown_age[:,1:])#填补缺失值df.loc[(df.Age.isnull()),'Age'] = predictedAgesreturn df,rfr

对于类别型变量

1 出现频率最高的变量填充(相当于众数)

data["D"] = data["D"].fillna(data["D"].value_counts().index[0])

2 将缺失作为一个特定的类别
把缺失当作一种特定的状态,
比如对于账户信息的收集,其中有些是选填项,这些特征肯定会存在缺失,我们可以把它当作一个”保密“的类别。

3 预测填充

对于时间序列

由于时间序列的特殊性,相邻的点相关性比较大。所以,对于时间序列的缺失值的处理方式会与数值型缺失值处理方式不同,往往会用相邻的点填充。
前一个值填充

df["col"] = df["col"].fillna(df["col"].fillna(method='ffill'))

后一个值填充

df["col"] = df["col"].fillna(df["col"].fillna(method='bfill'))

线性插值

df["col"] = df["col"].fillna(df["col"].interpolate())

二、删除处理

按列删除

某一列缺失数据较多,比如缺失率高达80%以上时,往往会删除整列特征

按行删除

对于重要的唯一标识ID特征存在缺失,比如我的建模目标是预测每个用户的消费能力。每个用户ID唯一标识一个特定的用户,若用户ID存在缺失直接删除缺失所在行。

三、不处理

其实对于树模型来说是支持缺失值的,但是建模效果可能会差于处理后建模。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/311163.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2019年第十届蓝桥杯国赛B组试题B-质数拆分-01背包问题+素数筛选

问题描述】 2019可以被分解成若干个两两不同的素数,请问不同的分解方案有多少种? 注意:分解方案不考虑顺序,如 2 2017 2019 和 2017 2 2019 属于同一种方案。答案:55965365465060 代码如下: #includ…

在线教育,异军突起,有一种华丽转身,叫做.NET在线讲师!(全职/兼职皆可)...

在线教育2020年,注定是不平凡的一年,疫情来袭,人们只能潜伏在家,很多人因此没有了收入甚至没有了工作,各个行业,也正在快速升级和重新洗牌,这其中,有一个行业,异军突起&a…

python计算相关系数

皮尔逊相关系数 用numpy实现 import numpy as npx np.array([1, 4, 3, 5]) y np.array([1, 3, 4, 5]) pc np.corrcoef(x, y)print(pc)输出结果: 调用scipy.stats中的pearsonr方法 from scipy.stats import pearsonr import numpy as npx np.array([1, 4, 3,…

2018年第九届蓝桥杯国赛B组试题B-激光样式-dfs

【问题描述】 x星球的盛大节日为增加气氛,用30台机光器一字排开,向太空中打出光柱。 安装调试的时候才发现,不知什么原因,相邻的两台激光器不能同时打开! 国王很想知道,在目前这种bug存在的情况下&#xf…

领域模型

领域模型是对领域内的概念类或现实世界中对象的可视化表示。又称概念模型、领域对象模型、分析对象模型。它专注于分析问题领域本身,发掘重要的业务领域概念,并建立业务领域概念之间的关系。学会了面向对象的思想,却依然写不出好的面向对象的…

含根号的导数怎么求_数学分析Mathematical Analysis笔记整理 第四章 导数与微分

第四章 导数与微分导数的概念一、引例1. 瞬时速度(变速直线运动)2. 切线的斜率二、导数的定义(1)导数定义1:若 在 点某邻域上有定义,且 存在,则称 在 点可导,该极限值称为 在 点的导…

重新定义代理的扩展性:WebAssembly在Envoy与Istio中的应用

原文:https://istio.io/blog/2020/wasm-announce/作者:CRAIG BOX, MANDAR JOG, JOHN PLEVYAK, LOUIS RYAN, PIOTR SIKORA (GOOGLE), YUVAL KOHAVI, SCOTT WEISS (SOLO.IO)译者:陆培尔编者按Istio的架构在1.5版本中发生了翻天覆地的变化&#…

srs10流程图_高效的SRS资源指示方法与流程

公开的主题一般涉及电信,更特别地涉及下一代移动无线通信系统中的srs资源的高效指示。背景技术:下一代移动无线通信系统(5g或nr)将支持各种用例集合和各种部署场景集合。后者包括在低频(数百mhz)(与如今的lte类似)和甚高频(数十ghz的毫米波)两者处的部署…

2019年第十届蓝桥杯国赛B组试题E-路径计数-dfs(坑题)

【问题描述】 从一个 5 x 5 的方格矩阵的左上角出发,沿着方格的边走,满足以下条件的路线有多少种? 总长度不超过 12; 最后回到左上角; 路线不自交; 不走出 5 x 5 的方格矩阵范围之外。如下图所示&#xff…

python中开关_pyq中的开关按钮

可以用pyqt5创建一个开关按钮吗?在我正在用pyqt5在python中设计一个过滤工具。用户甚至可以对其数据进行过滤或合并。在我在qtablewidget中显示可能的过滤器,用户可以使用复选框选择要应用的过滤器。在每一行中,复选框都是独占的,…

2019年第十届蓝桥杯国赛B组试题G-排列数-next_permutation枚举,模拟

在一个排列中,一个折点是指排列中的一个元素,它同时小于两边的元素,或者同时大于两边的元素。 对于一个 1∼n 的排列,如果可以将这个排列中包含 t个折点,则它称为一个 t1 单调序列。 例如,排列 (1,4,2,3)…

.NET Core开发实战(第22课:异常处理中间件:区分真异常与逻辑异常)--学习笔记(下)...

接下来介绍使用代理方法的方式,也就是说把 ErrorController 整段逻辑直接定义在注册的地方,使用一个匿名委托来处理,这里的逻辑与之前的逻辑是相同的app.UseExceptionHandler(errApp > {errApp.Run(async context >{// 在 Features 里面…

2019年第十届蓝桥杯国赛B组试题A-平方序列-枚举

【问题描述】 小明想找到两个正整数 X 和 Y&#xff0c;满足 2019 < X < Y;2019^2 , X^2 , Y^2 组成等差数列。请你求出在所有可能的解中&#xff0c;X Y 的最小值是多少&#xff1f; 答案提交 这是一道结果填空的题&#xff0c;你只需要算出结果后提交即可。 本题的结…

lcd刷新慢_LCD1602刷新率很慢的问题

#include"lcd.h"/******************************************************************************** 函 数 名 : Lcd1602_Delay1ms* 函数功能 : 延时函数&#xff0c;延时1ms********************************************************…

【朝夕技术专刊】Core3.1WebApi_Filter-Authorize详解

欢迎大家阅读《朝夕Net社区技术专刊》第6期我们致力于.NetCore的推广和落地&#xff0c;为更好的帮助大家学习&#xff0c;方便分享干货&#xff0c;特创此刊&#xff01;很高兴你能成为忠实读者&#xff0c;文末福利不要错过哦&#xff01;前言&#xff1a;本部分文档将详细给…

2019年第十届蓝桥杯国赛B组试题D-求值-枚举

【问题描述】 学习了约数后&#xff0c;小明对于约数很好奇&#xff0c;他发现&#xff0c;给定一个正整数 t&#xff0c;总是可以找到含有 t 个约数的整数。 小明对于含有 t 个约数的最小数非常感兴趣&#xff0c;并把它定义为 St 。 例如 S1 1, S2 2, S3 4, S4 6&#…

pythonimport是拷贝_02Python学习笔记之二.一【import、==和is、深浅拷贝】2019-08-17

章节号内容1图片格式(png)宽度大于620px,保持高宽第1章节  import模块1-1 import模块—sys.path↓import导入模块的搜索路径&#xff1a;In [1]: import sysIn [2]: sys.pathOut[2]:#第一个为当前路径[,/usr/lib/python36.zip,/usr/lib/python3.6,/usr/lib/python3.6/lib-dyn…

以正确的方式下载和配置 ASP.NET Core 官方源码

我们可以在Github上面直接查看ASP.NETCore 3.x的源代码&#xff0c;但是我们也可以把源代码下载下来进行查看。而下载源代码进行查看有很多好处&#xff1a;任意的导航源代码内置了一个示例项目直接调试源代码下载源代码想下载并配置好源码&#xff0c;你需要&#xff1a;最新版…

2017年第八届蓝桥杯国赛B组试题A-36进制-进制转换

【问题描述】 对于16进制&#xff0c;我们使用字母A-F来表示10及以上的数字。 如法炮制&#xff0c;一直用到字母Z&#xff0c;就可以表示36进制。 36进制中&#xff0c;A表示10&#xff0c;Z表示35&#xff0c;AA表示370 你能算出 MANY 表示的数字用10进制表示是多少吗?【答…

h5应用 vue 钉钉_uniapp开发一个小视频应用(一)

“uni-app 是一个使用 Vue.js 开发所有前端应用的框架&#xff0c;是一种终极的跨平台解决方案&#xff0c;这里的平台&#xff0c;主要指的是App平台(android、ios)、小程序平台、H5平台。开发者编写一套代码&#xff0c;可发布到iOS、Android、H5、以及各种小程序(微信/支付宝…