Pandas中的缺失值处理.docx
- 文档编号:2167060
- 上传时间:2022-10-27
- 格式:DOCX
- 页数:13
- 大小:829.58KB
Pandas中的缺失值处理.docx
《Pandas中的缺失值处理.docx》由会员分享,可在线阅读,更多相关《Pandas中的缺失值处理.docx(13页珍藏版)》请在冰豆网上搜索。
Pandas中的缺失值处理
相信大家在处理数据的时候经常会发现有一些数据的缺失这个时候便会很头大因为有时候的缺失的数据是本来就没有的这些数据不管就好了有的数据虽然没有但是也可以根据一些数据推算出来这个数据是多少然后给它填上但是有的数据缺失是随机缺失的完全不知道应该怎么处理所以呢今天我就带大家了解一下数据中的缺失值以及如何对缺失值进行处理。
1.读取数据
相信大家在使用python读取数据的时候会出现这种报错的情况。
这种情况是因为文件名中有中文遇到这种情况第一种方式就是讲文件名改为英文或者这样处理可以。
先使用open打开然后赋值给变量然后关闭掉文件使用被赋值的变量就可以了。
二、处理缺失值
1、什么是缺失值
俗话说知己知彼百战百胜在处理缺失值之前我们首先要了解一下什么是缺失值?
直观上理解,缺失值表示的是“缺失的数据”。
可以思考一个问题:
是什么原因造成的缺失值呢?
其实有很多原因,实际生活中可能由于有的数据不全所以导致数据缺失,也有可能由于误操作导致数据缺失,又或者人为地造成数据缺失但是主要的还是分为机械原因和人为原因。
机械原因是由于机械原因导致的数据收集或保存的失败造成的数据缺失,比如数据存储的失败,存储器损坏,机械故障导致某段时间数据未能收集(对于定时数据采集而言)。
人为原因是由于人的主观失误、历史局限或有意隐瞒造成的数据缺失,比如,在市场调查中被访人拒绝透露相关问题的答案,或者回答的问题是无效的,数据录入人员失误漏录了数据
缺失值从缺失的分布来讲可以分为完全随机缺失,随机缺失和完全非随机缺失。
∙完全随机缺失(missingcompletelyatrandom,MCAR)指的是数据的缺失是随机的,数据的缺失不依赖于任何不完全变量或完全变量。
∙随机缺失(missingatrandom,MAR)指的是数据的缺失不是完全随机的,即该类数据的缺失依赖于其他完全变量。
∙完全非随机缺失(missingnotatrandom,MNAR)指的是数据的缺失依赖于不完全变量自身。
缺失值从缺失值的所属属性来讲可以分为单值缺失,任意缺失和单调缺失。
∙单值缺失:
如果所有的缺失值都是同一属性,那么这种缺失成为单值缺失。
∙任意缺失:
如果缺失值属于不同的属性,称为任意缺失。
∙单调缺失:
对于时间序列类的数据,可能存在随着时间的缺失,这种缺失称为单调缺失
在Python中缺失值被认为是None、np.nan、NaT的形式。
原理性的东西我们就说这么多下面我们进入代码部门首先我们人为的造成一些数据的缺失
然后我们生成一列英雄们的生日的数据列
查看数据表的信息。
2、转换数据列的类型
这个时候我们通过info()方法发现生日列的类型是obxxxxject的需要将生日列的类型通过to_datetime()转换为日期型
3、掩码提取空值
首先使用isnull()或者notnull()来查看是否缺失
Isnull()是将缺失值判断为True非缺失值判断为False
Notnull()将缺失值判断为False非缺失值判断为True
∙将有空值的行提取出来
∙反之将非空行的数据提取出来
1.掩码的其他用处
4.1、将不是地球的英雄提取出来
∙首先将那个星球的列名改为星球
∙然后将外星球的英雄提取出来。
4.2、将1980年之后出生的英雄提取出来
4.3、将1988年1月1号之前出生的英雄提取出来
5、丢弃缺失值
既然在数据中有缺失值了,常见的一种处理办法就是丢弃缺失值。
使用dropna方法可以丢弃缺失值。
user_info.dropna(axis=0how='any'thresh=Nonesubset=Noneinplace=False)
seriese使用dropna比较简单,对于Datafrxxxxame来说可以设置更多的参数。
axis参数用于控制行或列,跟其他不一样的是,axis=0(默认)表示操作行,axis=1表示操作列。
how参数可选的值为any(默认)或者all。
any表示一行/列有任意元素为空时即丢弃,all一行/列所有值都为空时才丢弃。
subset参数表示删除时只考虑的索引或列名。
thresh参数的类型为整数,它的作用是,比如thresh=3,会在一行/列中至少有3个非空值时将其保留。
∙一列数据中只要存在一个空值就删除掉
从结果可以看出身高列和城市列都存在空值这样就被删除掉了。
∙一行数据中只要城市和性别出现空值就删除掉
从结果可以看出钢铁侠、索尔因为身高出现空值而被删除这一行的数据奇异博士因为城市出现空值而被删除一行的数据灭霸是年龄出现了空值但是年龄这一列并未做为删除的条件所以没有被删除掉数据。
三、填充缺失值
除了可以丢弃缺失值外也可以填充缺失值最常见的是使用fillna完成填充。
Fillna这个名字一看就是用来填充缺失值得嘛。
1、固定值填充
填充缺失值时常见的一种方式是使用一个标量来填充。
比如我们可以将缺失的年龄都填充为0。
∙将英雄们的身高填充为0
当然在身高列填充0显然是不规范的咱们这里只做演示使用大家在实际的处理数据的时候还是要跟数据结合起来在选择填充的标量。
2、上下文填充
除了可以使用标量来填充之外还可以使用前一个或后一个有效值来填充。
设置参数method=’pad’或method=’ffill’可以使用前一个有效值来填充。
设置参method='bfill'或method='backfill'可以使用后一个有效值来填充。
除了通过fillna方法来填充缺失值外,还可以通过interpolate方法来填充。
默认情况下使用线性差值可以是设置method参数来改变方式。
3、替换缺失值
现在大家想一想到底什么才是缺失值呢不要以为我前边说过的那些None、np.nan、NaT这些是缺失值这些在Pandas中被认为是缺失值但是呢在我们活生生的人眼中某些异常值也会被当成缺失值来处理。
例如,在我们的存储的用户信息中,假定我们限定用户都是青年,出现了年龄为40的,我们就可以认为这是一个异常值。
再比如,我们都知道性别分为男性(male)和女性(female),在记录用户性别的时候,对于未知的用户性别都记为了“unknown”很明显,我们也可以认为“unknown”是缺失值。
除了这些有时会也会出现一些空白的字符串这些也可以认为是缺失值。
对于上面的这一系列问题我们可以使用replace方法来替换缺失值。
∙假设我们现在是一个地球流浪者收容组织不允许外星人的存在那么英雄现在已经存在了打又打不过但是又不能违反组织的规定那怎么办呢那就把这些惹不起的外星人定义成黑户也就是空值不知道他们的星球属性睁一只眼闭一只眼。
∙这个时候外星这个属性去掉了但是阿斯加德和泰坦星明显不是一个地球的城市所以我们也要将城市属性换成NaN但是分开设置又太麻烦了我们就可以直接将城市作为一个映射的字典给替换掉。
∙处理完外星人的事了之后现在返回来处理咱们地球人的事这个时候发现黑寡妇的生日是1929年明显是一个假的出生日期既然生日是假的年龄应该也是假的所以我们需要将年龄更改为unknown然后在定义为缺失值。
除了替换特定的值以外我们还可以使用正则表达式来替换如将空白字符串替换为空值。
∙将中年替换为中老年
4、使用其他对象填充
除了我们自己手动丢弃、填充已经替换缺失值之外我们还可以使用其他的对象来填充。
例如我们有两个用户年龄的series其中一个由缺失值另外一个没有我们可以额将没有缺失值的series的元素传给有缺失值的。
[文档可能无法思考全面,请浏览后下载,另外祝您生活愉快,工作顺利,万事如意!
]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Pandas 中的 缺失 处理