文章目录

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

数据去重

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. 减少Building 'Xxx' Gradle project info等待时间
  2. 利用SMS OSD实现win2008操作系统的部署
  3. 【学习笔记】超简单的快速数论变换(NTT)(FFT的优化)(含全套证明)
  4. Linux网络服务基础
  5. 如何从Fiori launchpad发出的请求判断出后台是哪个网关系统在响应
  6. Linux底层开发之四书五经
  7. 外媒:Apple面临着印度iPhone的停用
  8. windows10 搜索桌面搜索功能失效的解决
  9. android+自动拨打电话,自动拨打电话 - 好玩的代码
  10. 基于matlab的QPSK系统仿真及应用
  11. 安装PdaNet以连接Android设备
  12. linux打开dwg格式文件怎么打开软件,DWG 文件扩展名: 它是什么以及如何打开它?...
  13. [腾讯社区开放平台]介绍开放授权协议-OAuth
  14. 匿名留言板表白墙 小程序校园树洞带后台
  15. 低熵加壳malware
  16. 【Day3.3】美攻铁道市场零距离接触行驶中的火车
  17. 使用Persimmon UI Builder 开发的一些技巧和注意事项 -- (RT-thread 柿饼UI)
  18. 【openstack-rally】使用rally执行tempest api测试并导出测试报告
  19. 千锋教育+计算机四级网络-计算机网络学习-02
  20. 病毒先生,这很好玩吗??!!

热门文章

  1. angular创建自定义指令的四种方式
  2. 如何讲好一个商业故事(人力资源)
  3. 单体架构、SOA和微服务
  4. 2012-1-18 不死何生 向死而生
  5. C# 手机号脱敏处理
  6. 我对汉诺塔问题的理解
  7. 微信支付大盗--黑色产业链
  8. Xilinx ISE中使用Synplify综合报错的原因之二
  9. solidworks正版软件的授权经销商有这样的软件
  10. 【知乎整理】云计算和虚拟机(VMWare)有什么区别?