pandas使用浮点值NaN表示浮点和非浮点数组中的缺失数据:
In [14]: string_data = Series(['aardvark','artichoke',np.nan,'avocado'])
In [15]: string_data
Out[15]:
0 aardvark
1 artichoke
2 NaN
3 avocado
dtype: object
In [16]: string_data.isnull()
Out[16]:
0 False
1 False
2 True
3 False
dtype: bool
python内置的None值也会被当作NA处理:
In [17]: string_data[0] = None
In [18]: string_data.isnull()
Out[18]:
0 True
1 False
2 True
3 False
dtype: bool
1.滤除缺失数据
dropna用于返回一个仅含非空数据和索引值的Series:
In [20]: data = Series([1,NA,3.5,NA,7])
In [21]: data.dropna()
Out[21]:
0 1.0
2 3.5
4 7.0
dtype: float64
通过布尔型索引亦可以:
In [22]: data[data.notnull()]
Out[22]:
0 1.0
2 3.5
4 7.0
dtype: float64
对于DataFrame,dropna默认丢弃含有缺失值的行
In [23]: data = DataFrame([[1.,6.5,3.],[1.,NA,NA],[NA,NA,NA],[NA,6.5,3.]])
In [24]: cleaned = data.dropna()
In [25]: data
Out[25]:
0 1 2
0 1.0 6.5 3.0
1 1.0 NaN NaN
2 NaN NaN NaN
3 NaN 6.5 3.0
In [26]: cleaned
Out[26]:
0 1 2
0 1.0 6.5 3.0
传入how="all"丢弃全为NaN的行:
In [27]: data.dropna(how="all")
Out[27]:
0 1 2
0 1.0 6.5 3.0
1 1.0 NaN NaN
3 NaN 6.5 3.0
丢弃含有NaN的列:
In [28]: data[4] = NA
In [29]: data
Out[29]:
0 1 2 4
0 1.0 6.5 3.0 NaN
1 1.0 NaN NaN NaN
2 NaN NaN NaN NaN
3 NaN 6.5 3.0 NaN
In [30]: data.dropna(axis=1,how="all")
Out[30]:
0 1 2
0 1.0 6.5 3.0
1 1.0 NaN NaN
2 NaN NaN NaN
3 NaN 6.5 3.0
thresh可以选择过滤含有多少有用数据的行
In [41]: df
Out[41]:
0 1 2
0 -0.184676 NaN NaN
1 0.565214 NaN NaN
2 0.440203 NaN NaN
3 0.188283 NaN 0.146847
4 1.696903 NaN 0.554640
5 -1.287915 0.139527 -0.494558
6 0.854922 0.299511 0.773247
In [42]: df.dropna(thresh=2) # thresh=2表示至少有两个非空数据
Out[42]:
0 1 2
3 0.188283 NaN 0.146847
4 1.696903 NaN 0.554640
5 -1.287915 0.139527 -0.494558
6 0.854922 0.299511 0.773247
In [43]: df.dropna(thresh=1)
Out[43]:
0 1 2
0 -0.184676 NaN NaN
1 0.565214 NaN NaN
2 0.440203 NaN NaN
3 0.188283 NaN 0.146847
4 1.696903 NaN 0.554640
5 -1.287915 0.139527 -0.494558
6 0.854922 0.299511 0.773247
2.填充缺失数据
fillna是最主要的填充缺省数据的方法:
In [9]: df.fillna(0)
Out[9]:
0 1 2
0 0.863556 0.000000 0.000000
1 -0.099558 0.000000 0.000000
2 -0.605804 0.000000 0.000000
3 -0.934688 0.000000 -1.198976
4 0.741383 0.000000 0.229845
5 -1.415495 0.511485 -0.086808
6 -0.748325 0.437964 -2.458319
通过字典调用fillna可以实现不同列填充不同值:
In [11]: df.fillna({1:0.5,2:-1})
Out[11]:
0 1 2
0 0.863556 0.500000 -1.000000
1 -0.099558 0.500000 -1.000000
2 -0.605804 0.500000 -1.000000
3 -0.934688 0.500000 -1.198976
4 0.741383 0.500000 0.229845
5 -1.415495 0.511485 -0.086808
6 -0.748325 0.437964 -2.458319

pandas知识点(处理缺失数据)的更多相关文章

  1. 利用Python进行数据分析(10) pandas基础: 处理缺失数据

      数据不完整在数据分析的过程中很常见. pandas使用浮点值NaN表示浮点和非浮点数组里的缺失数据. pandas使用isnull()和notnull()函数来判断缺失情况. 对于缺失数据一般处理 ...

  2. pandas 4 处理缺失数据nan

    from __future__ import print_function import pandas as pd import numpy as np np.random.seed(1) dates ...

  3. Pandas汇总和处理缺失数据

    汇总的函数 方法 说明 count 非NA的值数量 describe 针对Series和DataFrame列计算汇总统计 min.max 计算最小值和最大值 argmin.argmax 计算能够获取到 ...

  4. Pandas之Dropna滤除缺失数据

    import pandas as pd import numpy as np from numpy import nan as NaN 一.处理Series对象 通过dropna()滤除缺失数据 fr ...

  5. pandas(五)处理缺失数据和层次化索引

    pandas用浮点值Nan表示浮点和非浮点数组中的缺失数据.它只是一个便于被检测的标记而已. >>> string_data = Series(['aardvark','artich ...

  6. 机器学习-Pandas 知识点汇总(吐血整理)

    Pandas是一款适用很广的数据处理的组件,如果将来从事机械学习或者数据分析方面的工作,咱们估计70%的时间都是在跟这个框架打交道.那大家可能就有疑问了,心想这个破玩意儿值得花70%的时间吗?咱不是还 ...

  7. Python数据分析--Pandas知识点(三)

    本文主要是总结学习pandas过程中用到的函数和方法, 在此记录, 防止遗忘. Python数据分析--Pandas知识点(一) Python数据分析--Pandas知识点(二) 下面将是在知识点一, ...

  8. Python数据分析--Pandas知识点(二)

    本文主要是总结学习pandas过程中用到的函数和方法, 在此记录, 防止遗忘. Python数据分析--Pandas知识点(一) 下面将是在知识点一的基础上继续总结. 13. 简单计算 新建一个数据表 ...

  9. 利用Python进行数据分析-Pandas(第五部分-数据规整:聚合、合并和重塑)

    在许多应用中,数据可能分散在许多文件或数据库中,存储的形式也不利于分析.本部分关注可以聚合.合并.重塑数据的方法. 1.层次化索引 层次化索引(hierarchical indexing)是panda ...

随机推荐

  1. 配置Spring发送邮件

    推荐查看原博客        转载自:配置Spring发送邮件 Spring Email抽象的核心是MailSender接口.顾名思义,MailSender的实现能够通过连接Email服务器实现邮件发 ...

  2. 基于nginx的FastCGI的缓存配置

    废话不多说了, 直接上配置, 其实 fastcgi_cache 和 proxy_cache 的配置基本一样: # !缓存文件存放目录 # levels 缓存层次 # keys_zone 缓存空间名和共 ...

  3. 寻找jar包的方法

    在项目开发中经常会遇到资源jar查找难的问题,一种使用maven ,另一种方法是: (1).使用下载地址:https://oss.sonatype.org/content/repositories/r ...

  4. 实现多行文字居中方法(兼容IE6)

    <p class="mulit_line"> <span style="font-size:12px;">这里是高度为150像素的标签内 ...

  5. linux服务器安装nodejs运行环境

    安装nodejs运行环境 第一步:到node官网下载相应版本的安装包,将安装包放置服务器上,路径为 usr/local/node(可根据自身情况进行修改) 第二步:解压 ***.tar.xz格式文件需 ...

  6. mockjs模拟数据请求

    一般项目的方法 <html> <head> <script> <script src="http://requirejs.org/docs/rele ...

  7. 网页编辑器CKEditor4.3.1+CKFinder2.4+JW Player6.7(视频播放器)集成

    CKEditor是使用最多的一款在线网页编辑器,不仅好用,而且功能强大.易扩展.浏览器兼容性好.另外,CKEditor网页编辑器经常更新.本程序使用的是最新稳定版CKEditor4.3.1,添加使用了 ...

  8. SSH中懒加载异常--could not initialize proxy - no Session

    SSH进行关联的表进行显示时出现的问题,老是显示你的OGNL表达式错误,但是找了很久确实没错,在网上找了一下,下面的这个方法本人认为是最有效的方法(已经测试可以使用) 在web.xml中加入 程序代码 ...

  9. LeetCode 4Sum 4个数之和

    题意:这是继2sum和3sum之后的4sum,同理,也是找到所有4个元素序列,满足他们之和为target.以vector<vector<int>>来返回,也就是二维的,列长为4 ...

  10. [转]iOS开发总结之代码规范

    转自:http://www.cocoachina.com/ios/20151014/13678.html 命名规范 总 的来说, iOS命名两大原则是:可读性高和防止命名冲突(通过加前缀来保证). O ...