Python中数据清洗缺失值,重复值和异常值的处理
1 缺失值的处理
1.1 常规缺失值的处理
np.nan,NaN,None,NaT(时间数据类型的缺失值)等
df.isnull()
1.判断每一个df中的数据是否为缺失值,是则返回True,否则返回False
2.可以利用True为1,False为0的特性,sum()即为缺失值数量
df.notnull()
判断每个df中的值是否不为缺失值,是不为缺失值返回True,不是不为缺失值则返回False
df.dropna() 1.删除缺失值,可以指定axis来控制删除出现缺失值的行或者列 2.使用dropna( )中的参数how设置删除行列标准
- how=‘all’:只有当该列(或行)全为缺失值时,才删除该列(或行)
- how=‘any’:只要该列(或行)中有一个缺失值,就会将该列(或行)删除掉 默认
df.fillna(999)
fillna填充缺失值
平均数填充:df.fillna(df.字段名(列名).mean()) 使用某一字段(列)的平均数填充
众数填充:df.fillna(df.字段名(列名).mode()[0]) 使用某一字段(列)的第一个众数填充
中位数填充:df.fillna(df.字段名(列名).median()) 使用某一字段(列)的中位数填充
上下文填充:df.fillna(method=‘ffill’) 使用上文填充(forwardfill),使用下文填充(backfill/bfill)
df.fillna(df.mean()) 使用各个字段(列)对应的均值填充(众数/中位数等同理)
df.interpolate()
使用线性差值填充,可以通过设置method参数来改变方式
1.2 其他缺失值的处理
实际工作中,某些异常值我们也会当做缺失值来处理。 例如,在我们的患者信息中,年龄字段出现了大约120岁的值,我们就可以认为这是一个异常值。
再比如,我们都知道性别分为男性(male)和女性(female),在记录用户性别的时候,对于未知的用户性别都记为了 “unknown”,很明显,我们也可以认为“unknown”是缺失值。
此外,有的时候会出现空白字符串,这些也可以认为是缺失值。
对于上面的这种情况,我们可以使用 replace 方法来替换缺失值。
- df.replace(’’,np.nan) 使用np.nan替换是’'的数据
2 重复值的处理
df.duplicated() 按行进行检验,第一次出现返回False,不是第一次返回True
df.drop_duplicates()
- subset
考虑哪些列来标识重复项 - keep
- “first”:保留第一个重复项,其余删除。
- “last”:保留最后一个重复项,其余删除。
- False:删除所有重复项。
3 异常值的处理¶
散点图,箱线图(数据百分位数),算法
3.1可以通过箱线图来查找异常值
箱线图所表示的各个数值的含义:线条右下到上分别表示。
最小值、第一四分位数、中位数、第三四分位数和最大值
第一四分位数(Q1),又称“较小四分位数”或“下四分位数”,等于该样本中所有数值由小到大排列后第25%的数字;
第二四分位数(Q2),又称“中位数”,等于该样本中所有数值由小到大排列后第50%的数字;
第三四分位数(Q3),又称“较大四分位数”或“上四分位数”,等于该样本中所有数值由小到大排列后第75%的数字;
第三四分位数与第一四分位数的差距又称四分位间距(InterQuartile Range,IQR)。
3.2 检测到了异常值,我们需要对其进行一定的处理。而一般异常值的处理方法可大致分为以下几种:
删除含有异常值的记录:直接将含有异常值的记录删除;
视为缺失值:将异常值视为缺失值,利用缺失值处理的方法进行处理;
平均值修正:可用前后两个观测值的平均值修正该异常值;
不处理:如果异常值具有实际价值,直接在具有异常值的数据集上进行数据挖掘;
->内容来自与我的老师,自己整理学习用!!!
Python中数据清洗缺失值,重复值和异常值的处理相关推荐
- python实现数据清洗(重复值+缺失值+异常值处理)
实现功能: python实现数据清洗,对重复记录.缺失值.异常值进行检测,并对其进行处理. 实现代码: # 导入需要的库 import numpy as np import pandas as pdd ...
- 在Python中没有测试[重复]
本文翻译自:not None test in Python [duplicate] This question already has an answer here: 这个问题在这里已有答案: Pyt ...
- 【Python】图解Pandas重复值处理
公众号:尤而小屋 作者:Peter 编辑:Peter 今天带来的文章是关于Pandas中重复值处理.Pandas中处理重复值主要使用的是两个函数: duplicated():判断是否有重复值 drop ...
- vba 提取 json某个值_Excel中提取不重复值的方法汇总(5种基础+VBA+1个自定义函数)...
各位朋友,你们好, 今天和你们分享Excel中提取不重复值的几种方法,着重介绍[5种]基础操作方法,另外附送一个VBA去重代码,拿去就可以直接使用. 一.基础操作方法 1.数据工具直接去重(见下图) ...
- python中布尔型的值_在python中对于bool布尔值的取反操作
背景 根据公司业务的需求,需要做一个对于mysql数据库的大批量更新.脚本嘛也是干干单单.使用了redis的队列做缓存,可以异步并发的多任务进行更新. 有点难受的地方在于,请求访问时,因为一些网速,速 ...
- js检测数组对象中是否有重复值
判断数组对象里的某个值是否都是同一个值 isRepeat=(arr)=> {var hash = {};for(let i=0;i<arr.length;i++){if (!hash[ar ...
- 不显示参数名_第51p,万能参数与返回值,Python中函数的返回值
大家好,我是杨数Tos,这是<从零基础到大神>系列课程的第51篇文章,第三阶段的课程:Python进阶知识:详细讲解Python中的函数(四)====>函数的参数与返回值(下篇). ...
- ArrayList去除集合中字符串的重复值
/* * 需求:ArrayList去除集合中字符串的重复值 * * 分析: * 1.创建一个集合对象 * 2.添加多个字符串元素 * 3.创建一个新的集合 * 4.拿旧集合中的元素到新集合中去找 * ...
- stream筛选出集合中对象属性重复值
stream筛选出集合中对象属性重复值 字符串集合筛选 List<String> strings = Arrays.asList("a", "bb" ...
最新文章
- Jürgen Schmidhuber发文纪念10年前的研究,网友:转折点非AlexNet?
- Python访问MySQL数据库
- 【LeetCode每周算法】零钱兑换
- java 二维数组
- 服务器性能发挥,浪潮服务器发挥性能优势,算力“焦虑”问题被解决
- 如何使用ssh命令行连接到小米手机
- 使用UniBeast安装Hackintosh(黑苹果)
- python大数据分析入门实例-记一次小机器的 Python 大数据分析
- java根据出生年月计算年龄
- 高质量通信gRPC入门,有了它,谁还用Socket
- 基于JSF框架的在线棋牌游戏平台
- CISP证书对个人求职有帮助吗?
- STM32MP157基于Yocto构建Qt镜像和SDK工具链
- Vs2013未能正确加载“Microsoft.VisualStudio.Editor.Implementation.EditorPackage”包 解决方案
- 投资效率模型两个版本(含stata代码以及计算参考文献)
- 数学之美系列二十四 -- 谈谈动态规划与如何设计动态规划算法
- Java中long类型直接赋值大数字的问题
- 变速外挂案例及原理分析
- 【ParaView教程】2.11 时间
- c语言随机生成凸多边形源代码,求能够包含随机产生的点的边数最少的凸多边形...