假设我们的数据集中有缺失值,该如何进行处理呢?

丢弃缺失值的行或列

首先我们定义了数据集的缺失值:

import pandas as pd
import numpy as np
dates = pd.date_range("2017-01-08", periods=6)
data = pd.DataFrame(np.arange(24).reshape(6, 4), index=dates, columns=["A", "B", "C", "D"]) data.iloc[0, 1] = np.nan
data.iloc[1, 2] = np.nan print("data:")
print(data)

这里缺失值用np.nan来设置,输出为:

data:
A B C D
2017-01-08 0 NaN 2.0 3
2017-01-09 4 5.0 NaN 7
2017-01-10 8 9.0 10.0 11
2017-01-11 12 13.0 14.0 15
2017-01-12 16 17.0 18.0 19
2017-01-13 20 21.0 22.0 23

丢弃缺失值数据

可以使用dropna函数把拥有缺失值数据的行或列进行丢弃。

我们这里以丢弃掉拥有缺失值行作为例子:

import pandas as pd
import numpy as np
dates = pd.date_range("2017-01-08", periods=6)
data = pd.DataFrame(np.arange(24).reshape(6, 4), index=dates, columns=["A", "B", "C", "D"]) data.iloc[0, 1] = np.nan
data.iloc[1, 2] = np.nan print("data:")
print(data) print("处理结果:")
print(data.dropna(axis=0))

输出为:

data:
A B C D
2017-01-08 0 NaN 2.0 3
2017-01-09 4 5.0 NaN 7
2017-01-10 8 9.0 10.0 11
2017-01-11 12 13.0 14.0 15
2017-01-12 16 17.0 18.0 19
2017-01-13 20 21.0 22.0 23
处理结果:
A B C D
2017-01-10 8 9.0 10.0 11
2017-01-11 12 13.0 14.0 15
2017-01-12 16 17.0 18.0 19
2017-01-13 20 21.0 22.0 23

这样把拥有NaN的2017-01-08和2017-01-09行给丢弃掉了。

dropna所拥有的参数有:

axis:0=按行进行删除,1=按列进行删除

how:'all'=丢掉全为NaN的行,'any'=丢弃只要此行中出现一个NaN的字段就丢弃

把缺失值替换成其它值

在处理缺失值时,我们也可以把缺失值替换成其它值,具体是通过使用fillna函数来实现的。

比如,我们想把缺失值设置成-1:

import pandas as pd
import numpy as np
dates = pd.date_range("2017-01-08", periods=6)
data = pd.DataFrame(np.arange(24).reshape(6, 4), index=dates, columns=["A", "B", "C", "D"]) data.iloc[0, 1] = np.nan
data.iloc[1, 2] = np.nan print("data:")
print(data) ret = data.fillna(-1)
print("处理结果:")
print(ret)

输出为:

data:
A B C D
2017-01-08 0 NaN 2.0 3
2017-01-09 4 5.0 NaN 7
2017-01-10 8 9.0 10.0 11
2017-01-11 12 13.0 14.0 15
2017-01-12 16 17.0 18.0 19
2017-01-13 20 21.0 22.0 23
处理结果:
A B C D
2017-01-08 0 -1.0 2.0 3
2017-01-09 4 5.0 -1.0 7
2017-01-10 8 9.0 10.0 11
2017-01-11 12 13.0 14.0 15
2017-01-12 16 17.0 18.0 19
2017-01-13 20 21.0 22.0 23

检查是否存在缺失数据

isnull()函数用来检查是否存在缺失值,如果存在缺失值,则对应位置就会显示True:

import pandas as pd
import numpy as np
dates = pd.date_range("2017-01-08", periods=6)
data = pd.DataFrame(np.arange(24).reshape(6, 4), index=dates, columns=["A", "B", "C", "D"]) data.iloc[0, 1] = np.nan
data.iloc[1, 2] = np.nan print("data:")
print(data) ret = data.isnull()
print("处理结果:")
print(ret)

输出为:

data:
A B C D
2017-01-08 0 NaN 2.0 3
2017-01-09 4 5.0 NaN 7
2017-01-10 8 9.0 10.0 11
2017-01-11 12 13.0 14.0 15
2017-01-12 16 17.0 18.0 19
2017-01-13 20 21.0 22.0 23
处理结果:
A B C D
2017-01-08 False True False False
2017-01-09 False False True False
2017-01-10 False False False False
2017-01-11 False False False False
2017-01-12 False False False False
2017-01-13 False False False False

如果我们想要知道整个的数据中是否存在缺失值,例子如下:

import pandas as pd
import numpy as np
dates = pd.date_range("2017-01-08", periods=6)
data = pd.DataFrame(np.arange(24).reshape(6, 4), index=dates, columns=["A", "B", "C", "D"]) data.iloc[0, 1] = np.nan
data.iloc[1, 2] = np.nan print("data:")
print(data) ret = np.any(data.isnull() == True) print("处理结果:")
print(ret)

输出为:

data:
A B C D
2017-01-08 0 NaN 2.0 3
2017-01-09 4 5.0 NaN 7
2017-01-10 8 9.0 10.0 11
2017-01-11 12 13.0 14.0 15
2017-01-12 16 17.0 18.0 19
2017-01-13 20 21.0 22.0 23
处理结果:
True

pandas处理丢失数据-【老鱼学pandas】的更多相关文章

  1. pandas基本介绍-【老鱼学pandas】

    前面我们学习了numpy,现在我们来学习一下pandas. Python Data Analysis Library 或 pandas 主要用于处理类似excel一样的数据格式,其中有表头.数据序列号 ...

  2. pandas设置值-【老鱼学pandas】

    本节主要讲述如何根据上篇博客中选择出相应的数据之后,对其中的数据进行修改. 对某个值进行修改 例如,我们想对数据集中第2行第2列的数据进行修改: import pandas as pd import ...

  3. pandas合并数据集-【老鱼学pandas】

    有两个数据集,我们想把他们的结果根据相同的列名或索引号之类的进行合并,有点类似SQL中的从两个表中选择出不同的记录并进行合并返回. 合并 首先准备数据: import pandas as pd imp ...

  4. pandas画图-【老鱼学pandas】

    本节主要讲述如何把pandas中的数据用图表的方式显示在屏幕上,有点类似在excel中显示图表. 安装matplotlib 为了能够显示图表,首先需要安装matplotlib库,安装方法如下: pip ...

  5. pandas选择数据-【老鱼学pandas】

    选择列 根据列名来选择某列的数据 import pandas as pd import numpy as np dates = pd.date_range("2017-01-08" ...

  6. pandas导入导出数据-【老鱼学pandas】

    pandas可以读写如下格式的数据类型: 具体详见:http://pandas.pydata.org/pandas-docs/version/0.20/io.html 读取csv文件 我们准备了一个c ...

  7. pandas合并merge-【老鱼学pandas】

    本节讲述对于两个数据集按照相同列的值进行合并. 首先定义原始数据: import pandas as pd import numpy as np data0 = pd.DataFrame({'key' ...

  8. tensorflow卷积神经网络-【老鱼学tensorflow】

    前面我们曾有篇文章中提到过关于用tensorflow训练手写2828像素点的数字的识别,在那篇文章中我们把手写数字图像直接碾压成了一个784列的数据进行识别,但实际上,这个图像是2828长宽结构的,我 ...

  9. 二分类问题续 - 【老鱼学tensorflow2】

    前面我们针对电影评论编写了二分类问题的解决方案. 这里对前面的这个方案进行一些改进. 分批训练 model.fit(x_train, y_train, epochs=20, batch_size=51 ...

随机推荐

  1. springmvc解决中文乱码问题

    1 第一种情况(get接收参数): 最近在用solr做一个搜索服务,发布给手机和pc等客户端调用,调用方式为:   http://www.ganbo.search/search?q="手机& ...

  2. OOM实例

    1. 使用Executors.newFixedThreadPool()方法,当不断创建新任务,而任务执行速度比创建速度慢时,任务对象就会在任务队列里面排队,堆内存得不到释放,导致OOM: 2. 使用P ...

  3. JS流程控制

    1.if...else... //if 语句:只有当指定条件为 true 时,该语句才会执行代码. //语法 if (condition) { 当条件为 true 时执行的代码 } //if...el ...

  4. JVM运行时内存组成分为一些线程私

    JVM运行时内存组成分为一些线程私有的,其他的是线程共享的. 线程私有 程序计数器:当前线程所执行的字节码的行号指示器. Java虚拟机栈:java方法执行的内存模型,每个方法被执行时都会创建一个栈帧 ...

  5. 【CF1132F】Clear the String(动态规划)

    [CF1132F]Clear the String(动态规划) 题面 CF 题解 考虑区间\(dp\). 增量考虑,每次考虑最后一个字符和谁一起删去,然后直接转移就行了. #include<io ...

  6. scrapy之使用LinkExtractor提取链接

    一.概述: 在页面含有少量链接时,使用selector来提取信息就可以,但如果链接特别多时,就需要用LinkExtractor来提取. 二.LinkExtractor构造器的各个参数: 1.allow ...

  7. Lua语法基础(一)

    1. 注释 -- 单行注释 --[[ 多行注释 --]] 2. 运行方式     (1)交互式运行         命令行下 lua进入交互模式     (2)命令行运行         lua + ...

  8. tomcat logs目录下 日志文件含义及配置位置

    含义:Web服务器访问日志配置位置:server.xml 含义:tomcat的标准输出(stdout)和标准出错(stderr),应用里使用System.out打印的东西都会到这里来,日志框架,配置了 ...

  9. SQL 统计某一天的数据量时, 使用 dateValue(字段) 与 between 性能差异很明显。

    感觉好久没有写sql语句了... 今天需要写一个统计某一天的数据时,考虑到字段的内容格式是:  2018-12-18 09:36:23 我开始写的是: select count(id) as reCo ...

  10. FreeNAS插件打造ownCloud私有云网盘

    ownCloud 是一个自由开源的个人云存储解决方案,可以自由获取无需付费,但用户需要自行架设服务器,好在FreeNAS可以通过插件轻松的构建ownCloud服务器. ownCloud 分为服务器端和 ...