大家好,我是不温卜火,是一名计算机学院大数据专业大二的学生,昵称来源于成语—不温不火,本意是希望自己性情温和。作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己所犯的错误希望能够帮助到很多和自己一样处于起步阶段的萌新。但由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教!暂时只有csdn这一个平台,博客主页:https://buwenbuhuo.blog.csdn.net/

这篇文章讲述的是简单的数据缺失处理方法。希望这篇数据清洗的文章对您有所帮助!如果您有想学习的知识或建议,可以给作者留言~

Chapter07 | 简单的数据缺失处理方法

  • 一、删除法
  • 二、均值填补
    • 1、使用Numpy库随机生成一个4行3列,含有缺失值的数据矩阵gen_data
    • 2、根据属性的不同类型,把含缺失值的属性进行缺失值填补
  • 三、众数填补
  • 四、插值填补
    • 1、常见的插值填补——拉格朗日插值填补
    • 2、线性插值填补
  • 五、特殊值填补
  • 六、哑变量发

一、删除法

把数据看作是一个NxD的二维矩阵,N代表数据记录的数量,D代表属性的数量

如果缺失值数量较少,样本数据足够大,删除缺失数据是最方便的处理方法

  • 1、导入数据集Airbnb
import pandas as pd
import numpy as np
data = pd.read_csv('./input/calendar.csv', header=0,   names=['listing_id','date','available','price'])data.tail(15)

  • 2、按列删除
list_del_data = data.drop('price',axis=1, inplace=False)
list_del_data.tail(15)

  • 3、按行删除

根据专业知识,price是重点关注的属性,不应该被删除
把所有含缺失值的记录删除,没这样做保留所有的属性,但样本数量会减少
在Airbnb数据集中,price属性含有缺失值,删除含有缺失值的数据记录

pair_del_data = data.dropna(axis=0, inplace=False)
pair_del_data.tail(15)


数据删除总结:

  1. 在含缺失值的数据量占比非常小(<=5%)的情况下有效
  2. 以减少数据来换取信息的完整,都是大量隐藏在被删除数据中的信息
  3. 在缺失数据占比较大,服从非随机分布时,可能导致数据偏离,得出错误的结论
  4. 在一些实际场景下,数据的采集成本高且缺失值无法避免,删除方法可能会造成大量的资源浪费

二、均值填补

含有缺失值的数据没有携带完整的信息,但简单的删除会导致已有信息的丢失
保留现在的数据,并对缺失值进行填补,成为合适的选择
通常来说,可使用均值、中位数和众数对缺失值进行填补

1、使用Numpy库随机生成一个4行3列,含有缺失值的数据矩阵gen_data

import pandas as pd
import numpy as np
import random
np.random.seed(111)
gen_data=pd.DataFrame(np.random.randn(4, 3),index=[1,2,3,4],columns=['feature1','feature2','feature3'])
gen_data.loc[3,:]=np.nan     # 强制把第三行设置成缺失值
gen_data

2、根据属性的不同类型,把含缺失值的属性进行缺失值填补

数值型:使用缺失值所在列的其他数据记录取值的均值、中位数进行填补
非数值型:使用同列其他数据记录取值次数最高的数值(众数)进行填补

  • 1、均值填补一般用于数值型数据

使用fillna()函数填补缺失值

gen_data.mean()

  • 填补平均值
gen_data.fillna(gen_data.mean())   # 填补平均值

  • 填补中位数
gen_data.fillna(gen_data.median())

三、众数填补

众数填补一般用于非数值型数据
在此以青少年市场细分数据集为例,gender属性存在缺失值

  • 1、查看缺失值
import pandas as pd
teenager_df = pd.read_csv('./input/teenager.csv', nrows = 25)
teenager_df['gender'].value_counts(dropna=False)
teenager_df['gender']

  • 2、mode()函数求众数
teenager_df['gender'].mode()

  • 3、inplace=True 在原有的基础上进行填充
teenager_df['gender'].fillna(teenager_df['gender'].mode()[0], inplace=True)
teenager_df['gender']

四、插值填补

利用函数f(x)在某个区间的特定值,计算出特定的函数
在区间内的其他点上使用该函数的值作为f(x)的近似值
使用插值法的思路,我们可以用来处理数据缺失,计算缺失值的估计值

1、常见的插值填补——拉格朗日插值填补

给定函数f(x)的n+1个互不相同的点Xi,对应的函数值为Yi

使用Scipy库的interpolate模块实现拉格朗日插值
步骤如下:
1、确定非缺失值的索引
2、找出含有缺失值列的其他值
3、调用lagrange函数得出拉格朗日插值多项式的系数
4、输入缺失值所在索引,返回对应的插值

  • 1、使用拉格朗日差值插补缺失值
from scipy.interpolate import lagrange
none_missing_data = gen_data[gen_data['feature1'].isnull() == False]
x1 = list(none_missing_data.index.values)
y1 = none_missing_data['feature1'].values
lagrange(x1,y1)

多项式系数为

对第三行的缺失值进行插值

2、线性插值填补

当n = 1 时,拉格朗日插值退化为线性插值法

线性插值法也称为两点插值法

使用Pandas库的interpolate函数实现线性插值
参数使用默认值,相当于对缺失值所在位置的前后值求均值,进行填补

  • interpolate()函数

根据数据记录的index进行插值
修改gen_data的index
添加interpolate函数的参数method=‘values’

gen_data.index = [1,2,3,4]
gen_data.interpolate(method='values')

五、特殊值填补

把缺失值,空值等当作特殊取值来处理,区别任何其他的属性取值
将所有的缺失位置用None,unknown等来填充
但是这种方法可能会导致严重的数据偏离,无法准确表达原始数据的含义

  • 表示:
  • 1、在Pandas库中,np.nan作为缺失值的一种表示方式
    含义是Not a Number ,用来表明一个缺失的浮点型数值
  • 2、还可以使用Python语言中的None这个单例对象来表示缺失值
    None是一个Python对象,Pandas和Numpy库的数组不能随意使用
    None只能在类型为object的数据结构中出现,来表示缺失值

使用Numpy库的array函数创建含有None对象的一维ndarray数组none_array

  • 查看none_array的属性dtype为object
none_array = np.array([5,9,15,None, 20,21])
print(none_array.dtype)

  • 在object数组上无法执行sum,max等聚合操作
np.sum(none_array)

六、哑变量发

如果离散型变量存在缺失值,可以将缺失值作为一个单独的取值进行处理
在青少年市场细分数据集中
将"性别"变量的缺失值作为一个特殊的取值"unknown",表示性别未知
认为"性别"变量包含“F”、“M”和“unknown”三个不同取值

import pandas as pd
import numpy as npteenager_sns = pd.read_csv('./input/teenager_sns.csv')print(teenager_sns['gender'].value_counts())teenager_sns['gender'] = teenager_sns['gender'].replace(np.NaN, 'unknown')print("")
print("哑变量方法处理后:\n")
print(teenager_sns['gender'].value_counts())

  本次的分享就到这里了,


  好书不厌读百回,熟读课思子自知。而我想要成为全场最靓的仔,就必须坚持通过学习来获取更多知识,用知识改变命运,用博客见证成长,用行动证明我在努力。
  如果我的博客对你有帮助、如果你喜欢我的博客内容,请“点赞” “评论”“收藏”一键三连哦!听说点赞的人运气不会太差,每一天都会元气满满呦!如果实在要白嫖的话,那祝你开心每一天,欢迎常来我博客看看。
  码字不易,大家的支持就是我坚持下去的动力。点赞后不要忘了关注我哦!


数据清洗 Chapter07 | 简单的数据缺失处理方法相关推荐

  1. AJAX学习基础:简单介绍数据岛使用方法

        数据岛指的是存在Html网页中的xml代码段,它在Html中形成了一个数据的集合,数据岛允许我们在Html网页中集成xml, 对xml编写脚本.     数据岛有它特有的形式,由标记xml开始 ...

  2. 最简单的数据备份的方法

    数据备份怎么操作?为了应对可能出现的文件和数据丢失或损坏等意外情况,我们经常需要将电子计算机存储设备中的数据复制到磁带等海量存储设备中. 在传统的定义中,为了防止电脑损坏或者电脑系统的崩溃,而将全部或 ...

  3. Excel VBA简单使用——数据缺失处理

    VBA(Visual Basic for Applications)是VB的一种宏语言.用来扩展应用程式的功能.特别是Microsoft Office软件. 转载请注明原文地址:http://blog ...

  4. 数据缺失、混乱、重复怎么办?最全数据清洗指南!

    Datawhale推荐 机器之心编译 要获得优秀的模型,首先需要清洗数据.这是一篇如何在 Python 中执行数据清洗的分步指南. 在拟合机器学习或统计模型之前,我们通常需要清洗数据.用杂乱数据训练出 ...

  5. 数据缺失、混乱、重复怎么办?最全数据清洗指南

    作者:机器之心 本文约5000字,建议阅读10分钟 本文为你介绍如何在 Python 中执行数据的分步清洗. 标签:数据处理 要获得优秀的模型,首先需要清洗数据. 在拟合机器学习或统计模型之前,我们通 ...

  6. 数据缺失、混乱、重复怎么办?最全数据清洗指南让你所向披靡

    一只小狐狸带你解锁 炼丹术&NLP 秘籍 正文来源:机器之心 前言 要获得优秀的模型,首先需要清洗数据.这是一篇如何在 Python 中执行数据清洗的分步指南. 在拟合机器学习或统计模型之前, ...

  7. 插值法补齐缺失数据_一种挽救你缺失数据的好方法——多重补插

    原标题:一种挽救你缺失数据的好方法--多重补插 缺失数据--研究中的绊脚石 在医学研究中,我们经常会碰到缺失数据.无论是因为实验设计的问题,或是检测手段精度,又或是医学实验中的不可抗力因素.一旦数据没 ...

  8. 数据缺失,数据异常,数据标准化的处理方法

    数据缺失 一.缺失值产生的原因 缺失值的产生的原因多种多样,主要分为机械原因和人为原因.机械原因是由于机械原因导致的数据收集或保存的失败造成的数据缺失,比如数据存储的失败,存储器损坏,机械故障导致某段 ...

  9. R语言实战-第十八章 R处理缺失数据的高级方法

    第18章 处理缺失数据的高级方法 # 目的:识别缺失数据:检查导致数据缺失的原因:删除包含的缺失值的实例或用合理的数值代替(插补)缺失值 #主要包: mice包 #主要数据集:VIM包中的sleep数 ...

最新文章

  1. Git详解之九 Git内部原理
  2. ffmpeg综合应用示例(一)——摄像头直播
  3. Sql server Always On 读写分离配置方法
  4. ACS AAA Tacacs+
  5. c#自动向网页Post信息并提取返回的信息
  6. 删除SQL Server注册
  7. hihoCoder #1872 : Pythagorean triple
  8. HDU - 5790 Prefix(主席树+字典树)
  9. 一文详解CSS常见的五大布局
  10. springboot 做表白墙_华广表白墙 第六期|hsl每天都想和你嘻嘻哈哈
  11. 火狐修复神秘的严重漏洞,同时影响Chrome 浏览器
  12. 38个Pandas实用技巧
  13. Solr 4.10.3 导入 Mysql 数据
  14. JAVA实现上传,下载,jxl操作Excel和邮件发送
  15. pycharm安装PyQT5教程
  16. 中交souq招商中心
  17. 前端页面预览word_jquery word 在线预览 jquery word预览插件
  18. 怎么把WORD中插入的图片改为统一尺寸的,看这里,文档中图片怎么改成同样大小
  19. Promise详尽指南
  20. 学而滑稽之,不亦乐乎

热门文章

  1. 电子凸轮追剪曲线生成算法 麦格米特
  2. PS调色类插件哪家强
  3. PS笔记:调色部分理论基础
  4. 脖子黑色素沉淀怎么去除,有效方法
  5. IOT语义互操作性之本体论 1
  6. 多目标优化算法:多目标非洲秃鹫优化算法MOAVOA(提供Matlab代码)
  7. 最终幻想7php攻略,最终幻想7图文攻略 PS版FF7全剧情任务攻略(CD1)(6)
  8. 你们要的歌单:网易云音乐收藏量前100的歌单
  9. 金融风控评分卡建模全流程!
  10. valgrnd调试详解