处理缺失值
时间:2020-03-07
本文章向大家介绍处理缺失值,主要包括处理缺失值使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一、处理缺失数据
pandas对象的所有描述性统计默认都不包括缺失数据。
缺失数据在pandas中呈现的⽅式有些不完美,但对于⼤多数⽤户可以保证功能正常。
对于数值数据,pandas使⽤浮点值NaN(Not a Number)表示缺失数据。我们称其为哨兵值,可以⽅便的检测出来。
在pandas中,我们采⽤了R语⾔中的惯⽤法,即将缺失值表示为NA,它表示不可⽤not available。
在统计应⽤中,NA数据可能是不存在的数据或者虽然存在,但是没有观察到(例如,数据采集中发⽣了问题)。
当进⾏数据清洗以进⾏分析时,最好直接对缺失数据进⾏分析,以判断数据采集的问题或缺失数据可能导致的偏差。
Python内置的None值在对象数组中也可以作为NA。
二、滤除缺失数据
2.1 Series
import pandas as pd from numpy import nan as NA series_1 = pd.Series([1,2,3,4,NA]) series_1[1] = None series_2 = series_1.dropna() series_3 = series_1[series_1.notnull()] #等同于 series_1.dropna() print('series_1\n', series_1) print('\nseries_2\n', series_2) print('\nseries_3\n', series_3)
2.1 DataFrame
import pandas as pd from numpy import nan as NA df_1 = pd.DataFrame([[1, 2, 3, 4], [5, 6, 7, NA], [NA, NA, NA, NA]]) df_2 = df_1.dropna() # 丢弃带NA的行 df_3 = df_1.dropna(how='all') # 丢弃全部为NA的行 df_4 = df_3.dropna(axis=1) # 丢弃带NA的列 print('df_1\n', df_1) print('\ndf_2\n', df_2) print('\ndf_3\n', df_3) print('\ndf_4\n', df_4)
三、填充缺失值
可能不想滤除缺失数据(有可能会丢弃跟它有关的其他数据),⽽是希望通过其他⽅式填补那些“空洞”。对于⼤多数情况⽽⾔,fillna⽅法是最主要的函数。
通过⼀个常数调⽤fillna就会将缺失值替换为那个常数值:
import pandas as pd import numpy as np from numpy import nan as NA df_1 = pd.DataFrame(np.random.randn(4, 3)) df_1.iloc[2:, 1] = NA df_1.iloc[4:, 2] = NA df_2 = df_1.fillna(0) df_3 = df_1.fillna({1: 1, 2: 2}) # 对reindexing有效的那些插值⽅法也可⽤于fillna df_4 = df_1.fillna(method='ffill', limit= 2) #method='ffill' 向上取值;limit= 2 只操作2行 df_5 = df_1.fillna(df_1.mean()) # 填充平均值 print('df_1\n', df_1) print('\ndf_2\n', df_2) print('\ndf_3\n', df_3) print('\ndf_4\n', df_4) print('\ndf_5\n', df_5)
原文地址:https://www.cnblogs.com/qianslup/p/11981075.html
- 分布式服务框架 dubbo/dubbox 入门示例
- SmtpClient发送邮件遭遇The specified string is not in the form required for a subject.
- 彻底解决WordPress 中 半角全角字符转义 的问题
- 利用Spring的@Async异步处理改善web应用中耗时操作的用户体验
- Oracle中使用Entity Framework 6.x Code-First方式开发
- 边缘计算推动AI发展 未来能摆脱云计算吗?
- intellij idea 高级用法之:集成JIRA、UML类图插件、集成SSH、集成FTP、Database管理
- 微软.NET Core RC2正式发布,横跨所有平台
- 二帮主:央行数字货币的崛起,会给比特币带来什么影响
- cas原理介绍
- 结合Jexus + Kestrel 部署 asp.net core 生产环境
- C#全角和半角转换
- 浅谈Scala在大数据处理方面的优势
- 利用mybatis-generator自动生成代码
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- leetcode之有多少小于当前数字的数字
- HTTP/2内核剖析
- mysql数据库中指定值在所有表中所有字段中的替换
- C语言火车订单管理源码
- c语言学生成绩管理系统源码
- web基础随笔
- 一次完整的JVM堆外内存泄漏故障排查记录
- ToughRADIUS 结合 Ldap 实现动态密码认证和MAC认证
- coscmd的应用
- scheduler-设计与实现
- 3分钟短文:太爽了,用Laravel写API接口!
- Spring mvc文件上传实现
- 「Mysql优化大师三」查询执行计划explain详解,含案例
- flutter BottomAppBar实现不规则底部导航栏
- Yarr:一个UI很漂亮的RSS阅读器