文章目录

  • 数据去重
  • 检测缺失值
  • 缺失值的处理
    • 删除
    • 缺失值的填补替换

数据去重

python数据清洗中去重常用drop_duplicates函数,下面是它的参数说明

参数名称 说明
subset 接收string和sequence。表示进行去重的列
keep 接收特定的string。表示去重是保留第几个数据,或者不保留。“first”:保留第一个,“last”:保留最后一个,False:只要有重复都不保留。默认为"first"
inplace 接收boolean。表示是否在原表上进行操作。默认为False

有时候我们在处理重复值之前,可能需要检查一下是否存在重复值,或者重复值出现在哪一个位置上,这个时候我们可以用到duplicated方法来检查,与drop_duplicates不同,它只能检查,而drop_duplicates可以删除。
我们来看一下它们的用法

data = {'name':['a','b','c','a'],'age':[12,12,18,12],'sex':['男','男','女','男'],'score':[59,78,99,59]
}
df3 = DataFrame(data)
df3


现在我们用duplicated方法来检查一下这个表重复的行

df3.duplicated()


检查出了第四行是重复的,那么它对重复行是怎么定义的呢,是所有数据都相同吗?
默认是这样的,但是我们可以通过设置它和drop_duplicates的通用参数subset来定义重复行。
subset接收字段名的字符串,可以任意个数。
我们设置了subset参数后,它就会根据我们给出的字段去检查重复值,只要这些字段的数据是相同,那么就判定为重复值。

下面我们将上面的重复值进行删除

df3.drop_duplicates()


我们使用默认的方法成功将最后一行完全重复的数据给删掉了,这里删掉的是最后一行,如果我们想要删除第一行或者全部删除不保留的话,那么可以手动设置keep参数

df3.drop_duplicates(keep='last') # 保留最后一行

df3.drop_duplicates(keep=False) # 保留最后一行


如果我们设置subset方法,就可以指定哪些字段重复视为重复值

df3.drop_duplicates(subset=['age', 'sex'])  # b也被去掉了

还有一点需要注意的,我们用drop_duplicates删除重复值后,它默认是不会改变原本的数据的,只是返回了一个值而已,如果我们需要它直接改变原来的数据的话,可以设置inplaceTrue,不过我们一般可以用一个新的容器来接收这个返回值,这样又不会伤害原来的数据,也能得到处理后的数据。

检测缺失值

数据中的某个或某些特征的值是不完整的,这些值成为缺失值。一般我们需要对这些缺失值进行处理。
pandas提供了识别缺失值的方法isnull和识别非缺失值的方法notnull,可以结合sum函数使用,检查缺失值的分布和缺失值的个数。

df = DataFrame([[3,4,5], [1,6,np.nan], ['xxj','fff',np.nan],[np.nan,'a','f']])
df.isnull()


可以看到它在缺失值的位置返回了True,非缺失值的地方返回False
notnull与它相反。

我们结果sum函数来看看缺失值的分布和个数

df.isnull().sum()


在哪一列有多少个缺失值都已经很清楚的显示出来了。

如果我们只要得到全部缺失值的个数,不在意它的分布的话,可以连续使用2个sum函数统计出全部缺失值的个数。

缺失值的处理

删除

处理缺失值的第一个方法就是将带有缺失值的数据使用dropna函数删除。
下面表格是该函数参数说明

参数名称 说明
axis axis=0删除行,axis=1删除列,默认为0
how 可选参数有 ‘any’,和‘all’, 默认 ‘any’,any表示行或列中只要有一个缺失值就清除,all表示要整行都是缺失值才清除,
thresh thresh参数接受一个int值,表示保留有n个非空值的行或列
subset subset参数接受一个集合作为值,可以是列表、元组、数组等,表示哪些列或行必须不能有空值,处于这些列或行的空值所处的行或列将被清除
inplace inplace参数接受一个bool的值,表示是否在原数组上操作,如果值为True,那么返回None,并且直接对原数组进行缺失值的清理,否则就只返回一个copy
df = DataFrame([[3,4,5], [1,6,np.nan], ['xxj',np.nan,np.nan],[np.nan,np.nan,np.nan]])
df


默认的dropna函数会删除所有带有缺失值的行,相当于"how"参数的值为"any"

df.dropna()


我们也可以将“how”的值设置为“all”,这个时候它只会删掉整行都是缺失值的数据

df.dropna(how='all')


如果我们不想一个缺失值就删掉,不不能全部都是缺失值的时候才去删掉,这个时候我们可以用“thresh”参数来设置,当数据至少含有多少个缺失值的时候才删掉

df.dropna(thresh=2)


除了以多少个缺失值作为它删除的依据外,我们还可以自定义哪些字段的数据为缺失值时,进行删除

df.dropna(subset=(0,))


如果我们需要对列进行处理的话,只要将axis设置为1即可,使用方法都是一样的,只不过这个时候它不再识别字段名了,而是识别行索引。

缺失值的填补替换

当缺失值所在的数据比较重要的时候,可能不适合删除,这个时候可以采用填充的方法或者插值的方法,这里讲一下填充缺失值的方法fillna

参数名称 说明
axis 接收0或1.表示轴向选择,默认为1
value 表示用来替换缺失值的值
method 取值为“backfill”或“bfill”时表示使用下一个非缺失值来填补缺失值。取值为“pad”或“ffill”是表示使用上一个非缺失值来填补缺失值
limit 接收一个int。表示(每行或每列)填补缺失值个数上限,超过这个上限不再继续填补
inplace 是否在原表上进行操作

创建带有缺失值的数据

df2 = DataFrame([[3,np.nan,3],[1,2,np.nan],[np.nan,4,'ds'],['f',np.nan,9]])
df2


fillna方法最简单的用法,直接填充一个固定值,可以将所有缺失值都替换为给定的值

df2.fillna('999')

我们还可以使用limit参数来限制它每一列填充的个数,这个时候它就不会全部填充了,你可以根据需要限制填充的个数

df2.fillna(value='999',limit=1)


上面介绍的是全局填充的方式,fillna方法还能设置哪一列填充什么内容,采用字典的形式传参即可,但是这种方法只能针对列也就是axis=0,如果axis=1的话会报错

df2.fillna(value={0:'111',1:222},axis=0)  # 必须是axis=0


上面介绍的都是我们自己传一个值进去填补缺失值,但有时候我们自己传入的值可能会破坏数据原本的结构,所以fillna还提供了一个method参数,可以使用表内的值进行填补

我们这里选择了行的轴向,method的值为‘backfill’,表示以缺失值后面的非缺失值来填补,下面的运行结果可以看到,原本的缺失值被他们后面的值给替换了。
但是有一个缺失值没有填补,因为它的后面没有任何非缺失值,也就是说这种填补方法是有局限性的,可能一些在边角的缺失值填补不到

df2.fillna(method='backfill',axis=1)

数据清理之重复值、缺失值的基本处理方法相关推荐

  1. Python数据分析入门笔记4——数据预处理之重复值

    系列文章目录 Python数据分析入门笔记1--学习前的准备 Python数据分析入门笔记2--pandas数据读取 Python数据分析入门笔记3--数据预处理之缺失值 Python数据分析入门笔记 ...

  2. python-数据分析-(12)pandas数据清洗、缺失值、重复值、异常值处理常见方法

    一.导入模块 import pandas as pd from scipy.interpolate import interp1d 二.读取excel文件 data=pd.read_excel(r'E ...

  3. python实现数据清洗(重复值+缺失值+异常值处理)

    实现功能: python实现数据清洗,对重复记录.缺失值.异常值进行检测,并对其进行处理. 实现代码: # 导入需要的库 import numpy as np import pandas as pdd ...

  4. c语言讲两个数组合并_两列数据相互去掉重复值后合并

    大家好,今日继续讲VBA数组与字典解决方案的第27讲,内容是两列数据中相互去掉重复值之后将数据合并.这讲的内容利用到动态数组,固定数组,数组的合并,数组的转置等等. 还是先看实例,下面的工作表中A列和 ...

  5. excel多条件计数python_Excel统计满足条件的不重复值个数的8种方法,第三种方法最适合新手!我真的入门了!...

    问题很常见,但是对新手来说又比较棘手,所以我们来一期,系统讲讲,个人我个人的知识储备,大概写了8种,涵盖Excel的方方面面!最后一种也满足一下大家对于Python的好奇! 友情提醒:应该是目前你所能 ...

  6. [Python] 数据预处理(缺失值、异常值、重复值) [相关方法参数说明、代码示例、相关概念]

    前言 系列文章目录 [Python]目录 视频及资料和课件 链接:https://pan.baidu.com/s/1LCv_qyWslwB-MYw56fjbDg?pwd=1234 提取码:1234 文 ...

  7. ​一文看懂数据清洗:缺失值、异常值和重复值的处理

    https://www.toutiao.com/a6711212131125035534/ 导读:在数据清洗过程中,主要处理的是缺失值.异常值和重复值.所谓清洗,是对数据集通过丢弃.填充.替换.去重等 ...

  8. pandas的自带数据集_用Python和Pandas进行数据清理:检测丢失值

    数据清理是一个非常耗时的任务,在应用机器学习模型之前,你需要获得待处理的数据,然后你会意识到这些数据是一团乱麻. 根据IBM数据分析的观点 -- 数据科学家花费80%的时间来寻找.清理和组织数据上,只 ...

  9. 一文看懂数据清洗:缺失值、异常值和重复值的处理

    01  数据列缺失的4种处理方法 数据缺失分为两种:一种是行记录的缺失,这种情况又称数据记录丢失:另一种是数据列值的缺失,即由于各种原因导致的数据记录中某些列的值空缺. 不同的数据存储和环境中对于缺失 ...

最新文章

  1. NASA打算送机器蜜蜂去探索火星上的生命痕迹
  2. python 修改文件名_【学习分享】利用python批量修改文件名
  3. 使用js实现放大镜效果
  4. boost::polygon模块实现多边形间隔相关的测试程序
  5. Python入门:局部变量与全局变量2
  6. 降级!调离!取消研究生导师资格!西南交大发布最新通报,多人被问责
  7. 利用IDEA部署过的Tomcat开发Web Service
  8. 蒙特卡罗方法介绍( 二)
  9. java和vb.net des加密_vb.net DES加密与解密
  10. java 上传断点续传_JAVA大文件上传断点续传解决方案
  11. scratch课程案例——漫天飞雪
  12. ActiveMQ 下载与安装
  13. app测试和接口测试区别
  14. 设计师思维模式你get到多少个?
  15. 2017艾普兰机智云全家福
  16. 如何在 iPhone 上恢复已删除的短信
  17. 基于C#在WPF中使用斑马打印机进行打印
  18. java null转空_Java对象为空时,将null转换为 保存值为空的属性
  19. NCX SQL编程规范
  20. 2021年茶艺师(中级)最新解析及茶艺师(中级)考试总结

热门文章

  1. UG NX机械手抓取实物的仿真,包涵PLC程序,触摸屏程序
  2. simulink 双馈风机虚拟同步机VSG控制,风储VSG控制频域SFR模型,对比不同惯量J对一次调频频率的影响
  3. 小清新网格背景教师公开课PPT模板
  4. Xilinx ISE、Synplify、Modelsim之间的关系,为什么会存在比ISE更专业的FPGA开发工具?
  5. 信息化监理会走向何方?
  6. 信息系统项目管理笔记1-信息化基础知识、服务管理、监理知识
  7. Unity UDP传输图片
  8. 蓝桥5-4史丰收速算
  9. 机器学习(二)非参数估计matlab例程
  10. 北斗三号频点_【导航论坛】北斗三号卫星导航信号及接收策略