用pandas或numpy处理数据中的空值(np.isnan()/pd.isnull())__illusion_的博客-程序员信息网_numpy.isnan

技术标签: pandas  tricks  numpy  Python  

最近在做数据处理的时候,遇到个让我欲仙欲死的问题,那就是数据中的空值该如何获取。

我的目的本来是获取数据中的所有非零且非空值,然后再计算获得到的所有数据计算均值,再用均值把0和空值填上。这个操作让我意识到了i is None/np.isnan(i)/i.isnull()之间的差别,再此做简单介绍:

1.关于np.nan:

先明确一个问题,即空值的产生只有np.nan()一种方法。

# np.nan()的一些奇妙性质:

np.nan == np.nan
>>> False

np.isnan(np.nan)
>>> True

np.nan is None
>>> False

type(np.nan)
>>> float

总结一下:

  • np.nan不是一个“空”对象,用 i is None判断是False;
  • 对某个值是否为空值进行判断,只能用np.isnan(i)函数,万万不可用 i == np.nan()来做,否则你会死的很惨的,因为空值并不能用判断相等的“==”正确识别(上例前两条);
  • np.nan非空对象,其类型为基本数据类型float(是不是很神奇,我也不知道为什么要这样设计)

 

2.np.isnan()和pd.isnull()何时使用:

# 首先创建一个DataFrame:
bb = pd.DataFrame({'a':[0,1,2,np.nan]})
bb

>>>     a
    0	0.0
    1	1.0
    2	2.0
    3	NaN

# 先测试一下np.isnan()
np.isnan(bb)
>>>     a
    0	False
    1	False
    2	False
    3	True
# 值得一提的是,如果想获悉整个DataFrame有无空值,可以在此基础上这样做:

np.isnan(bb).all()
>>> a    False
    dtype: bool          # 这行是指返回值的dtype

# 再测试一下isnull()
pd.isnull(bb)
>>>     a
    0	False
    1	False
    2	False
    3	True

由上可见,其实np.isnan()和pd.isnull()都可以对不论是DataFrame、Python list还是仅仅一个数值进行空值检测。但一般在实际应用中,np.isnan()多用于单个值的检验,pd.isnull()用于对一个DataFrame或Series(整体)的检验。

此外,根据pandas官方文档和源代码,pandas提供的另一个函数pd.isna()与pd.isnull()完全一样。

上面提到的any()/all()函数,请见pandas文档:

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.all.html#pandas.DataFrame.all

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.any.html#pandas.DataFrame.any

其他与空值检测或删除相关的函数还有:notna()、fillna()、dropna()等等。实战中应灵活使用。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_41712499/article/details/82719987

智能推荐

字符编码Unicode、UTF-8 ..._Forget_Sky的博客-程序员信息网_字符的unicode编码

开始计算机只在美国用。八位的字节一共可以组合出256(2的8次方)种不同的状态。他们把其中的编号从0开始的32种状态分别规定了特殊的用途,一但终端、打印机遇上约定好的这些字节被传过来时,就要做一些约定的动作:遇上0×10, 终端就换行;遇上0×07, 终端就向人们嘟嘟叫;遇上0x1b, 打印机就打印反白的字,或者终端就用彩色显示字母。他们看到这样很好,于是就把这些0×20以下的字节状态称为”控制码”。他们又把所有的空格、标点符号、数字、大小写字母分别用连续的字节状态表示,一直编到了第12

signature=5a5aedb582a14169a2045badbad186e2,javax.net.ssl.SSLHandshakeException: Received fatal alert..._weixin_39953100的博客-程序员信息网

Can someone please tell what is really going on here?. I am trying to establish an SSL connection to a Server. after running my application with the Djavax.ne.debug command, i get this.C:\Inetpub\asp\...

Linux中signal机制阐述_sahusoft的博客-程序员信息网

最近同事的程序设计过程中用到了Linux的signal机制,从而引发了我对Linux中signal机制的思考。Signal机制在Linux中是一个非常常用的进程间通信机制,很多人在使用的时候不会考虑该机制是具体如何实现的。signal机制可以被理解成进程的软中断,因此,在实时性方面还是相对比较高的。Linux中signal机制的模型可以采用下图进行描述。         每个进

利用jieba进行中文分词并进行词频统计_空字符(公众号:月来客栈)的博客-程序员信息网_分词词频统计

1.安装jieba库在windows的Anaconda环境下如果没有设置环境变量,则从Dos命令先进入...\Anaconda3\Scripts 目录中,然后运行以下命令即可:pip install jieba2.分词示例我们先用一段文本来进行分词并做词频统计: 央视网消息:当地时间11日,美国国会参议院以88票对11票的结果通过了一项动议,允许国会“在总统以国家安全为...

email正则表达式_普通网友的博客-程序员信息网_email 正则

说到正则表达式,网上有很多的通用的表达式,可是事实上说来,一般人的都 不愿意去拿来研究,就是拿来就直接用就行了.可是,事实上,可能有些时候,项目中或公司里的实际情况不一样,得要修改一下正则表达式的,

随便推点

linux搭建邮件服务器_weixin_34220179的博客-程序员信息网

一、概述:  在配置邮件服务器之前,先解释几个概念。  通常使用Email都很容易,但是Internet的邮件系统是通过几个复杂的部分连接而成的,对于最终用户而言,我们熟悉的Outlook,Foxmail等都是用来收信和发信的,称之为MUA:Mail User Agent,邮件用户代理。  MUA并非直接将邮件发送至收件人手中,而是通过MTA:Mail Transfer Agent,邮...

tcpserver.c_果果小师弟的博客-程序员信息网

/*vim tcpserver.cgcc -o tcpserver tcpserver.c./tcpservernetstat -ap|grep tcpserver*/#include <sys/types.h> #include <sys/socket.h>#include <stdio.h>#include <string.h>#include <netinet/in.h>#include <arpa/inet.

不定时定量更新文章对博客的影响_jxlazzw的博客-程序员信息网

大家在做seo的时候也许都听说过:“内容为王,外链为皇”这句话。可想而知内容对于网站的重要性那是不言而喻的。那么我们在做内容的时候也应该考虑更新的频率。如果不定时更新网站文章将会对搜索引擎和用户产生一定的影响。 不定时更新文章对搜索引擎的影响我们更新网站内容的时候就需要定时定量来更新,才会让百度蜘蛛成为习惯性来网站收取新的文章,从而被收录。如果我们更新网站内容的频率很乱,今天更新几篇然

流媒体发展新趋势_weixin_34018202的博客-程序员信息网

所谓流媒体是指用户通过网络或者特定数字信道边下载边播放多媒体数据的一种工作方式。流媒体应用的一个最大的好处是用户不需要花费很长时间将多媒体数据全部下载到本地后才能播放,而仅需将起始几秒的数据先下载到本地的缓冲区中就可以开始播放,后面收到的数据会源源不断输入到该缓冲区,从而维持播放的连续性,因此流媒体播放器通常只是在开始时有一些时延。流媒体系统要比下载播放系统复杂得多,所以需要...

Java 冒泡排序_胡小牧的博客-程序员信息网

冒泡排序的原理有一下几个步骤1 逐一比较数组中相邻的两个元素,如果后面的数字小于前面的数组,就交换前后元素2 经过一轮的比较之后一定有一个最大的排在后面的位置3 每次比较剩下的元素,经过n-1次比较,可以实现排序.package me;import java.util.Arrays;public class Me { public static vo...

玩客云 N1路由 各种盒子 s805 s905 s9系列等_梦境虽美,却不长的博客-程序员信息网_s805 s905区别

**Amlogic**玩客云 s805N1路由 s905数码视讯 Q7 (Q5) s905L中兴b860AV2.1 s905L魔百盒HM201 s905L百视通R3300-L咪咕盒子MG101 s905L新魔百盒M201-S s905L新魔百盒M201-D s905L创维900V21C s905L魔百盒 CMC-01-EG2-40FS905F百视通R3300-M s905mUT斯达康MC8638S s905L创维E951 s90...

推荐文章

热门文章

相关标签