用pandas或numpy处理数据中的空值(np.isnan()/pd.isnull())_np.isnull-程序员宅基地

技术标签: pandas  # numpy  tricks  numpy  Python  # pandas  

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

我的目的本来是获取数据中的所有非零且非空值,然后再计算获得到的所有数据计算均值,再用均值把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

智能推荐

MFC中CString使用技巧_format的cstring 坐标如何取出-程序员宅基地

文章浏览阅读749次。1.使用CString输出圆心坐标CString str1, str2, str3;str1.Format("%d,", "%d", conter0.x, conter0.y);str2.Format("%d,", "%d", conter1.x, conter1.y);str3 = " ; ";c_circle_center = str1 + str2 + str3;..._format的cstring 坐标如何取出

scala在linux环境下部署-程序员宅基地

文章浏览阅读114次。1.下载scala压缩包wget https://downloads.lightbend.com/scala/2.11.8/scala-2.11.8.tgz如果下载不了,只能去找压缩包了。下面利用secureCRT进行文件传输进入以后,设置一下编码,和系统匹配linux下面进行文件传输直接把文件往这里拖,然后去跟,根目录找就行了。然后进行文件解压tar -xzvf...

web页面性能优化以及SEO_语义化结构能提高网页加载速度吗-程序员宅基地

文章浏览阅读299次。web前端页面性能优化为了提高页面的加载速度,让用户有更好的体验,前端网站的性能优化是非常有必要的。优化的方式有以下几种:一、 编辑html的时候注意语义结构化  结构语义化:根据内容的结构,选择合适的标签,以便于开发者阅读和写出更优雅的代码,同时让浏览器的爬虫和机器很好地解析。  结构语义化的优点包括:    1. 在页面没有css或者css还未加载出来的时候,页面也能呈..._语义化结构能提高网页加载速度吗

计算机网络:05---网络类型:局域网、城域网、广域网、个域网、无线网络-程序员宅基地

文章浏览阅读2w次,点赞12次,收藏74次。网络类型简单的分为5种局域网(LAN) 城域网(MAN) 广域网(WAN) 个域网(PAN) 无线网络一、局域网(LAN)1.概念:局域网是指局限于一个地点、一栋建筑或一组建筑的网络2.组成:由多种组件构成:比如台式机、打印机、服务器以及其他存储设备3.特点所有的主机地址都落在一个单一连续的地址范围内 局域网不包含路由器,通常由单一的组织者进行管理 局域网内的通信..._城域网

讲解如何在虚拟机上安装Kali Linux_gns3路由连接 本地kali虚拟机-程序员宅基地

文章浏览阅读6.3k次,点赞8次,收藏94次。本文讲解如何在虚拟机上安装Kali Linux,希望对大家有所帮助。准备:一台电脑,VMware(VMware安装教程)一、下载系统镜像文件1.首先下载系统镜像,进入kali官网,在Downloads中选择Download Kali Linux,如下图所示。2.根据电脑配置选择合适的版本,在这里我选择的是64位版本,点击HTTP下载镜像文件。二、创建新的虚拟机1.打开VMware Workstation,创建新的虚拟机,我们使用自定义的配置方法。2.导入系统镜像文件。3.选择客户机_gns3路由连接 本地kali虚拟机

台式机关闭计算机时没有待机,台式电脑怎么设置成不会自动休眠?-程序员宅基地

文章浏览阅读1.1k次。优质回答 回答者:韬光养晦AA在开始菜单选择控制面板选项进入;在控制面板设置界面选择“系统与安全”;在系统与安全界面选择“更改计算机睡眠时间”;在更改睡眠时间页面,将电源接通时的睡眠时间修改为从不;修改设置后,点击保存修改按钮完成所有操作,电脑就不会休眠了。-----------------------------------------------------------------回答者:辜月..._电脑怎么设置关机不是休眠

随便推点

Android合成图片_android 多个imageview变成一张图片-程序员宅基地

文章浏览阅读537次。private fun convertViewToBitmap(view: View): Bitmap { view.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFI..._android 多个imageview变成一张图片

jQuery学习心得----鼠标经过时改变table行的背景色_jqgrrid table 修改鼠标放上去的背景颜色-程序员宅基地

文章浏览阅读3.6k次。学习了jQuery选择器,下面给大家一个关于选择器的例子,注释很详细,大家可以自己体会。 Title .tr1{background-color: #FF9933;} $(function(){ //$("#tb tr")--选择id为tb的table,再选择该table的行tr_jqgrrid table 修改鼠标放上去的背景颜色

Vue CLI安装的详细步骤_如何安装vuecli-程序员宅基地

文章浏览阅读1w次,点赞5次,收藏33次。Vue CLI安装的详细步骤为了以后安装方便,写一个具体的步骤。1.首先,打开vue官网,在生态系统的工具里找到Vue CLI,点击安装,先全局安装,直接打开cmd命令,执行以下命令。(我选的第一个)2.执行完成后,再执行这个命令,查看版本。3.如果上面两个都成功了,点击创建一个项目,执行以下命令。如何创建这个项目呢?首先,我们将项目创建在D盘或桌面,然后打开目录,在这个位置敲cmd命令,定位到当前的目录下。注意,一定不要在其他位置随便创建项目。4.再执行以下这个命令,hello-word是你_如何安装vuecli

浅谈 JavaScript 垃圾回收机制_javascript 有垃圾回收机制-程序员宅基地

文章浏览阅读484次。JavaScript 垃圾回收机制_javascript 有垃圾回收机制

文件上传下载_kendodialog 上传附件-程序员宅基地

文章浏览阅读111次。上传<style type="text/css"> /*文件上传 控件*/ .upload{position:relative; display:inline-block; height:33px;line-height:33px; overflow:hidden;vertical-align:middle; cursor:pointer;} .uploa..._kendodialog 上传附件

计算1-N中第K小的数字(按字典序排序)_长度为n的第k个排列 1,2,3,...,n 的字典序第k 小的排列。-程序员宅基地

文章浏览阅读2.5k次。public static int calK(int n, int k) { if (k &gt; n) { return 0; } int target = 1; for (int i = 2; i &lt;= k; i++) { target = next(target, n..._长度为n的第k个排列 1,2,3,...,n 的字典序第k 小的排列。

推荐文章

热门文章

相关标签