Pandas 空值 NAN 过滤筛选

Pandas数据处理时,经常需要对空值进行筛选或者过滤,这可以通过DataFrame.dropna()或者DataFrame.notnull()来实现。

1、函数介绍:

data.dropna(
    *,
    axis: 'Axis' = 0,
    how: 'AnyAll | lib.NoDefault' = <no_default>,
    thresh: 'int | lib.NoDefault' = <no_default>,
    subset: 'IndexLabel | None' = None,
    inplace: 'bool' = False,
    ignore_index: 'bool' = False,
) -> 'DataFrame | None'

axis取值0(默认)或者1, how取值any(默认)或者all,后面将参照到函数原型说明 。

2、创建示例数据

首先,我们创建一个示例数据集。使用Pandas创建一个包含空值的数据集如下所示:

import pandas as pd
import numpy as np
technologies= {
    'Courses':["ChatGPT","AI","JAVA","Python","SQL",np.nan],
    'Fee' :[50000,35000,np.nan,np.nan,np.nan,np.nan],
    'Duration':['30days',np.nan,'30days','N/A', np.nan,np.nan]
          }
df = pd.DataFrame(technologies)
display(df)

DataFrame数据结果如下:

3、使用 DataFrame.dropna() 过滤具有 nan 值的行:

通过使用方法,可以过滤掉 DataFrame 中具有 nan(不是数字)和 None 值的行。默认情况下,返回的是删除行后的 DataFrame 的副本。

3-1.一行中任意一个元素为nan值的过滤

df2=df.dropna()
print(df2)

执行结果:

axis=0, how='any' 是dropna()调用时的默认值,出现nan或者None的所有行都会被过滤掉。

3-2.一行中所有元素的数据全都是nan值的过滤

那如果是过滤掉值全部是nan的行,就可以使用如下代码:

df3=df.dropna(how='all')
print(df3)

参数how和all在这里,就相当于任意(any)和全部(all)的差别。

3-3、转换到列的话,传入axis=1。如下执行结果:

4、指定某列元素中为空或不空的筛选:

筛选出某列元素中,值不为空的所有行

df[df['Duration'].notnull()]

执行结果:

列元素中出现null的所有行:

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值