吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1258|回复: 4
收起左侧

[讨论] pandas-处理缺失值-[首次发贴,请大佬们轻喷]

[复制链接]
七八鼓捣A 发表于 2020-2-25 13:07

前言

最近看到一些教程关于“pandas读取数据之后,如何处理缺失值或者如何替换指定值为另外一个值”

看了那些教程,然后进行了一会实操,发现不能满足我的需求,于是开始探索另外的解决办法

下面来看一下解决方案

0x01、不设置默认加载空值为NAN keep_default_na=False
df = pandas.read_excel("/home/project/day320/test.xlsx", keep_default_na=False)

注释:pandas加载Excel表格,空值都是默认为 NAN,即源码中keep_default_na=True
所以当我们想要空值就是空值的话,那么可以设置 keep_default_na=False,这时候,读取出来的空值是空字符串

可是,我的Excel表格之前就是存在很多 NA 值的,这不能满足我的需求,我其实是想将 NA 值再还原回原来的空字符串,所以请继续看后面的方法

0x02、用dropna()、fillna()处理缺失值

存在下面的使用方法:

  • dropna:根据标签的值中是否存在缺失数据,然后对轴标签进行过滤,可以通过阈值来调节对缺失值的删除的容忍度

  • fillna:用指定值或者插值方法(如ffill或者bfill)填充缺失数据

  • isnull:用于判断单元格是否为空值;若为空值,则返回True

  • notnull:isnull的对立

删除空值:
df.dropna() # 默认会删除所有的空值,包含所有行里面的、所有列里面的空值

df.dropna(how="all") # 删除全为 NA 的行(即如果一整行的单元格都是NA的话,那么则删除这一行)

df.dropna(axis=1, how="all") # 删除全为 NA 的列(即如果一整列的单元格都是NA的话,那么则删除这一列)

判断空值:
df.isnull() # 对应的返回布尔值,查看是否为空的数据
df.notnull() # 与上一条相反

填充缺失值:
df.fillna(value=2, inplace=True) # 对缺失的NAN值全部替换为 0

df.fillna(value=2, method="ffill", limit=2) 
- method:表示插值方式,默认为ffill,对这个字段更多详解请参考官网文档
- limit:表示可以连续填充的最大次数(对于前向和后向填充)
- value:需要填充的值,可以为标量(字符串、数值等)或者字典对象
- inspace:表示是否在原来的对象上进行修改而不产生新的对象,true:在原基础上修改;false:会返回处理后的,新的对象
前方高能,巨坑提示如果你的数据中其实看起来就是空值的,但是这时候有可能为 空白的字符串 那么,你使用fillna或者dropna是不会生效的!!!!

小结:对于一些不确定的,或者不一定为空的内容,还是不能直接使用这两个dropnafillna这两个来处理缺失值。
相关参考fillna和inplace使用文章,请点击我进行了解

0x03、使用强大的replace来填充任何值的数据

pandas提供了一个replace方法,并且这个方法==可以使用正则==来处理

df.replace(to_replace=r"^NA$", value="", inplace=True, regex=True)

- to_replace:被替换的字符
- value:替换后的字符
- inplace:是否在原基础上进行修改
- regex:是否为正则表达式方式

由于我的表格里面的空值都是写着NA的,所以对于我来说,使用这个方法是最好的一个实现办法

如果你的空白字符可能含有空格、换行、制表符等空白字符的话,可以使用这个正则来替换:

df.replace(to_replace=r"^\s*$", value="", inplace=True, regex=True)

免费评分

参与人数 2吾爱币 +2 热心值 +2 收起 理由
ymhld + 1 + 1 我很赞同!
Alice丶纸飞机 + 1 + 1 学习学习

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 七八鼓捣A 发表于 2020-3-19 10:07
Alice丶纸飞机 发表于 2020-3-19 08:18
csv文件中得空值在训练的时候 是不是会提醒NaN报错

训练是指?
Alice丶纸飞机 发表于 2020-3-19 08:18
csv文件中得空值在训练的时候 是不是会提醒NaN报错
ymhld 发表于 2020-3-16 17:40
挺有用的,空值是很烦人,dropna不是很好的能达到要求,
 楼主| 七八鼓捣A 发表于 2020-3-16 17:19
自己给自己回复一下吧,免得尴尬
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-23 21:41

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表