当前位置: 首页 > backend >正文

【Pandas】pandas DataFrame notna

Pandas2.2 DataFrame

Missing data handling

方法描述
DataFrame.fillna([value, method, axis, …])用于填充 DataFrame 中的缺失值(NaN)
DataFrame.backfill(*[, axis, inplace, …])用于**使用后向填充(即“下一个有效观测值”)来填补缺失值(NaN)**的方法
DataFrame.bfill(*[, axis, inplace, limit, …])用于**使用后向填充(即“下一个有效观测值”)来填补缺失值(NaN)**的方法
DataFrame.dropna(*[, axis, how, thresh, …])用于删除包含缺失值(NaN)的行或列的方法
DataFrame.ffill(*[, axis, inplace, limit, …])用于**使用前向填充(即“前一个有效观测值”)来填补缺失值(NaN)**的方法
DataFrame.interpolate([method, axis, limit, …])用于对缺失值(NaN)进行插值填充的方法
DataFrame.isna()用于检测 DataFrame 中缺失值(NaN)的位置的方法
DataFrame.isnull()用于检测 DataFrame 中缺失值(NaN)的位置的方法
DataFrame.notna()用于检测 DataFrame 中非缺失值(即不是 NaN)的位置的方法

pandas.DataFrame.notna()

pandas.DataFrame.notna() 是一个用于检测 DataFrame 中非缺失值(即不是 NaN)的位置的方法。它返回一个新的布尔型 DataFrame,其中每个元素表示对应位置的值是否为非空值(not NaN)


📌 方法签名
DataFrame.notna()

✅ 返回值
  • 返回一个与原 DataFrame 形状相同的布尔型 DataFrame
  • 若某个位置是非空值(即不是 NaN),则对应位置为 True
  • 否则为 False

该方法不会修改原始数据。


❌ 注意事项
  • notna() 不支持参数;
  • 它仅用于检测 NaN,不识别 None 或其他空值(如空字符串、0 等);
  • notna()isna() / isnull() 完全相反
  • 常用于过滤掉缺失值或统计有效值数量。

🧪 示例代码及结果
示例 1:基本用法
import pandas as pd
import numpy as npdf = pd.DataFrame({'A': [1, np.nan, 3],'B': [np.nan, 2, np.nan],'C': [5, 6, 7]
})print("Original DataFrame:")
print(df)# 检测非空值位置
df_notna = df.notna()
print("\nAfter notna():")
print(df_notna)
输出结果:
Original DataFrame:A    B  C
0  1.0  NaN  5
1  NaN  2.0  6
2  3.0  NaN  7After notna():A      B     C
0  True  False  True
1  False  True  True
2  True  False  True

示例 2:统计每列的有效值数量
# 统计每列非空值的数量
valid_count = df.notna().sum()
print("\nValid value count per column:")
print(valid_count)
输出结果:
Valid value count per column:
A    2
B    1
C    3
dtype: int64

示例 3:统计整个 DataFrame 中的有效值总数
total_valid = df.notna().sum().sum()
print(f"\nTotal valid values: {total_valid}")
输出结果:
Total valid values: 6

示例 4:筛选出所有非空行(即整行都没有 NaN)
# 筛选整行都非空的行
full_rows = df[df.notna().all(axis=1)]
print("\nRows with no missing values:")
print(full_rows)
输出结果:
Rows with no missing values:A    B  C

因为没有任何一行是全部非空的,所以输出为空。


示例 5:筛选出至少有一个非空值的行
# 筛选至少有一个非空值的行
some_valid_rows = df[df.notna().any(axis=1)]
print("\nRows with at least one valid value:")
print(some_valid_rows)
输出结果:
Rows with at least one valid value:A    B  C
0  1.0  NaN  5
1  NaN  2.0  6
2  3.0  NaN  7

🧠 应用场景
场景说明
查看有效值分布快速了解哪些位置有有效数据
统计有效值数量结合 sum() 计算每列/行的有效值个数
过滤含缺失值的行/列使用 df.notna().all(axis=1) 配合布尔索引
预处理流程的一部分判断某列是否适合填充或删除

⚠️ 补充说明
  • notna()isna() / isnull() 完全互为反义操作;
  • 对于非浮点类型列(如字符串、整数),若含有 NaN,也会被标记为 False
  • 如果你希望将 None 视为 NaN,可以先使用 df.replace([None], np.nan) 转换。

✅ 总结对比
方法是否推荐使用说明
notna()✅ 推荐更直观地表达“是否为有效值”
~isna()✅ 推荐notna() 等价,可用于取反操作
~isnull()✅ 推荐notna() 等价,兼容性考虑

你可以将 notna() 作为日常数据清洗的重要工具之一,尤其在需要保留完整记录统计有效数据量时非常有用。

http://www.xdnf.cn/news/13535.html

相关文章:

  • 14.计算机网络End
  • 使用 C++ 和 OpenCV 构建智能答题卡识别系统
  • mysql知识点3--创建和使用数据库
  • 【图纸管理教程-2】工厂图纸混乱,用PLM怎么搜索数据?
  • 【医学目标检测】LN-DETR:一种基于多尺度特征融合的肺结节检测高效Transformer架构
  • 中兴B860AV1.1强力降级固件包
  • Spring Boot + MyBatis Plus 项目中,entity和 XML 映射文件的查找机制
  • Traefik 可观测性最佳实践
  • Windows 系统中修改文件默认打开方式
  • Shuffle流程
  • enumerable 和 configurable 属性详解
  • Vision Prompt Tune(视觉提示微调)
  • 如何在同一台电脑上安装并运行多个版本的 IntelliJ IDEA
  • Redis核心技术与实战指南
  • 品牌形象全面升级|Apache Fory:破界新生,开启高性能序列化新纪元
  • 单片机 - STM32 非阻塞式编程详解:以 LED 和按键为例(附超详细寄存器级代码)
  • 康谋方案 | 高精LiDAR+神经渲染3DGS的完美融合实践
  • html转markdown
  • 【JavaSE】IO流学习笔记
  • 让Python成为你的网站引擎:Django全栈开发初体验!!!
  • 蓝桥杯等竞赛场景下 C++ 的时间与空间复杂度深度解析​
  • 【论文解读】Search-o1:用 Agentic 搜索增强推理模型
  • Oracle 的AHF (Automatic Health Framework) 工具
  • java实现RabbitMQ消息发送和接收功能(包含测试)
  • 日语学习-日语知识点小记-进阶-JLPT-真题训练-N2阶段(1):单词部分练习
  • Unity3D SRP Batcher原理分析
  • DEM 地形分析与水文建模:基于 ArcGIS 的流域特征提取
  • Android 10.0 勿扰模式开启关闭功能实现
  • DevOps软件开发流程规范
  • 抖音授权登录-获取用户授权调用凭证