【Pandas】Python中None、null和NaN

这篇具有很好参考价值的文章主要介绍了【Pandas】Python中None、null和NaN。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

经常混淆。

空值一般表示数据未知、不适用或将在以后添加数据。缺失值指数据集中某个或某些属性的值是不完整的。

在python中有这些空值缺失值表示:['nan', '', 'None', None, np.nan]

一般空值使用None表示,缺失值使用NaN表示。

注意: python中没有null,但是有和其意义相近的None。

pd.isnull不仅可以检测np.nan也可以检测None。
注意:pd.isnull是不可以检测字符串的,比如’',‘nan’,‘None’。这个也很好理解,字符串有字符串的判断方式。

我就踩了None和'None'的坑。。。


目录

1. None

1.1 None 与 'None'

1.1.1 处理空值类型的None

1.1.2 处理字符串类型的None

2. NaN

3. Pandas特别说明

判断缺失值方法

4. Pandas如何检测None和Nan

4.1 如何检测

5. 个人理解的等式


1. None

c = None
if isinstance(c, str):
    print('ok')
else:
    print(type(c))

# 代码输出
# <class 'NoneType'>

None表示空值,它是一个特殊 Python 对象, None的类型是NoneType
None 是 NoneType 数据类型的唯一值,我们不能再创建其它 NoneType 类型的变量,但是可以将 None 赋值给任何变量。

>>> type(None)
<class 'NoneType'>

该对象在Python解释器启动时自动创建,解释器停止时销毁。

特点

  • None 不支持任何运算
  • None 和任何其他的数据类型比较永远返回False
  • None 有自己的数据类型NoneType,不能创建其他NoneType对象(它只有一个值None)
  • None 与0、空列表、空字符串不一样
  • 可以将None赋值给任何变量,也可以给None值变量赋值
  • None是没有像len,size等属性的,要判断一个变量是否为None,直接使用
>>> None == 0 
False
>>> None == '' 
False
>>> None == False 
False

作为没有return关键函数的返回值

对于所有没有 return 语句的函数定义,Python 都会在末尾加上 return None,使用不带值的 return 语句(也就是只有 return 关键字本身),那么就返回 None。

def func()没有写返回值,那么返回值就是None

>>> def function():
        print('hanshu')
    
    result = function() 
    print(result)
hanshu
None

特别说明,表格中None有两种情况:

(1)空值类型的None。(2)字符串类型的“None”,是真实存在的。

1.1 None 与 'None'

1.1.1 处理空值类型的None

df.dropna(how='all')#删除所有内容均为缺失值的行
df.dropna(axis=1) #丢弃有缺失值的列
df.dropna(axis=1, how = 'all') #丢弃所有列中所有值均缺失的列
df.dropna(axis=0, subset=['datetime', 'values'])#丢弃datetime和values这两列中有缺失值的行

1.1.2 处理字符串类型的None

可以先将“None”值replace为pandas可读取的空值,如nan,然后再用dropna()去掉即可。

df.replace(to_replace='None', value=np.nan).dropna()

但我用这个没生效。。。

2. NaN

当使用Numpy或者Pandas处理数据的时候,经常会遇到条目中没有没有数据,然后当我们在去打印的时候就会出现NaN。

  • NaN是没有办法和任何数据进行比较。
  • 它和任何值都不相等,包括他自己。
  • 它的类型是float,但是和任何值做计算的结果都是NaN
import pandas as pd
df = pd.read_excel('/Users/mac/Desktop/test.xlsx',header=None)
df 
    0   1   2
0   1   2.0 3
1   4   NaN 6
2   7   8.0 9

原数据为下图:

【Pandas】Python中None、null和NaN

>>> num = df.loc[1,1] 
>>> num
nan
>>> result = num + 2  # nan+2是nan哦
>>> result 
>>> nan

nan和np.nan的关系是?一样的。

3. Pandas特别说明

  • 在pandas中的空值是""(直接一对双引号);空字符串:" ",中间多了一个空格
  • 缺失值在DataFrame指的是NaN或者NaT,在Series中指的是none或者nan
  • 当我们需要人为指定一个缺失值的时候,默认用None和np.nan来表示

【Pandas】Python中None、null和NaN

 其次,我们看看Pandas中None和NaN的关联:np.nan就是NaN,数据类型float64

  • 在我们创建的时候,默认二者是相同的;
  • 如果我们指定赋值为None,在Series中依然会变成none,并且是以float64的数据类型显示。

【Pandas】Python中None、null和NaN

下面截图有问题,None不允许赋值。

【Pandas】Python中None、null和NaN

 有问题

【Pandas】Python中None、null和NaN

判断缺失值方法

 Pandas中提供了一些用于检查处理空值缺失值的函数或方法

  • 使用isnull()notnull()函数可以判断数据集中是否存在空值和缺失值
  • 对于缺失数据可以使用dropna()fillna()方法对缺失值进行删除和填充,如果是None则不生效。

4. Pandas如何检测None和Nan

  • None是Python的特殊类型,NoneType对象,它只有一个值None。它不支持任何运算也没有任何内建方法。None和任何其他的数据类型比较永远返回False。None有自己的数据类型NoneType。你可以将None复制给任何变量,但是你不能创建其他NoneType对象。
>>>type(None)
<class 'NoneType'>
  • python 中Nan是not a number(非数)它即不是无穷大, 也不是无穷小,无穷大减无穷大会导致NaN,无穷大乘以0或无穷小或除以无穷大会导致NaN,有NaN参与的运算, 其结果也一定是NaN,NaN != NaN
>>>type(np.nan)
<class 'float'>
  • NULL 空字符串(python里没有null这个类型)
>>>type('')
<class ''str'>

4.1 如何检测

个人感觉最好用的是pd.isnull(或pd.isna)

isnull和isna区别

isnull是isna的别名,既然一样为什么要搞两个名字?Pandas dataframe是根据R的dataframe设计的,而R语言中na和null是两种不同的数据类型,因此有isna和isnull,python就保留了这两个方法,isnull是isna的别名而已;另一方面,pandas是建立在numpy之上的,numpy中又没有na或null值,而是用np.nan来表示缺失值,

所以pd.isnull不仅可以检测np.nan也可以检测None。

注意
pd.isnull是不可以检测字符串的,比如’',‘nan’,‘None’。这个也很好理解,字符串有字符串的判断方式。

比较全面的判断这些与空值有关的方法

i == '' or 
pd.isnull(i) or 
pd.isnull(float('nan')) (或者 i =='nan') or 
i =='None'

举例

list = ['nan', '', 'None', None, np.nan]
for i in list:
    if i == '' or pd.isnull(i) or pd.isnull(float('nan')) or i == 'None':
        print(i)

# ----------------------------
nan

None
None
nan

5. 个人理解的等式

  • NULL(数据库)=None(python列表)=NaN(pandas)
  • 空字符(数据库)=空字符(python列表)=空字符(pandas)
  • 从csv中获取数据时:空值(csv)=NULL(数据库)=NaN(pandas)
  • 转为csv数据时:数据库中的NULL\空字符pandas中的NaN\空字符,都变成csv中的空值。


 


参考:

None、null和NaN - 简书

图解pandas缺失值处理_pandas none赋值_尤尔小屋的猫的博客-CSDN博客

http://t.csdn.cn/x4Fx2

https://blog.csdn.net/Android_xue/article/details/121257528文章来源地址https://www.toymoban.com/news/detail-449153.html

到了这里,关于【Pandas】Python中None、null和NaN的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • pandas 判断空值

    Pandas 中可以使用以下方法来判断空值: df.isnull() :返回一个布尔类型的数据框,表示各个位置是否是空值。 df.isna() :与 df.isnull() 等价。 df.notnull() :与 df.isnull() 相反,返回一个布尔类型的数据框,表示各个位置是否不是空值。 例如:

    2024年02月14日
    浏览(44)
  • 判断int或Integer变量值为空值null

    1.int型变量的值不能为空值null 2.Integer类表示一个int值,但可以包含一个空值null 3.判断Integer变量是否为空值null:Integer变量== null;Integer变量!= null demo示例程序如下: 运行结果:

    2024年02月11日
    浏览(48)
  • 模型\视图一般步骤:为什么经常要用“选择模型”QItemSelectionModel?

                                                              一、“使用视图”一般的步骤: //1. 创建  模型(这里是数据模型!) tabModel = new QSqlTableModel ( this , DB ); // 数据表 //2. 设置  视图 的 模型(这里是数据模型!) ui - tableView - setModel ( tabModel ); 模

    2024年01月22日
    浏览(53)
  • 解决pandas.errors.InvalidIndexError: (slice(None, None, None), None)

    ValueError: x and y must have same first dimension, but have shapes (2, 14) and (14,) 问题分析: 由于上图索引(时间列)存在重复,导致下面代码中, ax.plot()的时候,把两个相同的索引,构造了一个(2,14)的重复 解决办法:对索引列去重复

    2024年02月16日
    浏览(39)
  • pandas进行数据计算时如何处理空值的问题?

    目录 1.数据预览: 2.解决方法 (1)问题示例 (2)方法 A.方法一 B.方法二 如下图如果不理睬这些空值的话,计算总分便也会是空值 A.方法一 我们可以利用fillna(0)将空值填充为零再进行计算 B.方法二 利用灵活算数法中的fill_value参数将空值填充为零 方法 描述 add 加法 sub 减法

    2024年01月18日
    浏览(40)
  • 【MybatisPlus】MP的分页查询、多条件查询以及查询过程中解决null的空值判定

    MP这样一款强大的持久层框架处理起来复杂的SQL来也是得心应手,效率极高,快快与我一同领略Plus的独特魅力吧 1.调用方法传入参数获取返回值 创建IPage分页对象,设置分页参数,1为当前页码,3为每页显示的记录数,执行分页查询并获取其结果 2.设置分页拦截器 将MP提供的分页

    2024年01月17日
    浏览(40)
  • Python中List类型数据结构广泛应用于各种场景中。然而,在数据分析和可视化过程中,经常需要将List转换为Pandas的DataFrame对象。那么如何将...

    Python中List类型数据结构广泛应用于各种场景中。然而,在数据分析和可视化过程中,经常需要将List转换为Pandas的DataFrame对象。那么如何将List转换为DataFrame对象呢?本文将介绍如何使用Python中Pandas库将List转换为DataFrame,并进一步将其转换为字符串。 将Python List转换为Pandas D

    2024年02月15日
    浏览(50)
  • Flutter中使用Overlay传入context提示:Null check operator used on a null value(对空值使用空检查运算符)

    首先此时使用的是GetX框架,框架截图如下: View中代码如下: logic代码 对Overlay的使用封装了一个单独的类PopToastManager(),PopToastManager()代码如下: 运行结果如下:  根据打印的语句可以得知,代码根本没有开始构建OverlayEntry(builder:(context){}) 查看错误,发现问题出现在对

    2024年02月03日
    浏览(37)
  • pip报错ERROR: Could not find a version that satisfies the requirement pandas (from versions: none)

    下载pandas报错如下: ERROR: Could not find a version that satisfies the requirement pandas (from versions: none) ERROR: No matching distribution found for pandas 解决方法:  在语句后面加上其他源,我这里用的清华源 然后成功:! !!  ps: 国内常用镜像源 清华大学 :https://pypi.tuna.tsinghua.edu.cn/simple/ 阿

    2023年04月08日
    浏览(56)
  • Python 去除列表中的空值

    要在Python中去除列表中的空值,可以使用以下代码示例。 这段代码定义了一个名为 remove_empty_values 的函数,它接受一个输入列表,并使用列表推导式过滤掉了所有的空值。最后,它返回一个不包含空值的新列表。 补充方法: 使用Python的 filter() 函数,将一个lambda函数应用于原

    2024年02月06日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包