【Pandas】pandas DataFrame dropna

news2025/6/10 8:47:06

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)的行或列的方法

pandas.DataFrame.dropna()

pandas.DataFrame.dropna() 是一个用于删除包含缺失值(NaN)的行或列的方法。它是数据清洗中最常用的方法之一,适用于去除不完整数据、准备模型输入、生成干净数据集等场景。


📌 方法签名
DataFrame.dropna(*, axis=0, how=<no_default>, thresh=<no_default>, subset=None, inplace=False, ignore_index=False)

🔧 参数说明
参数类型说明
axis{0/'index', 1/'columns'},默认 0删除方向:
- 0:按行删除
- 1:按列删除
how{'any', 'all'},默认 'any'判断是否删除的标准:
- 'any':只要有一个 NaN 就删除
- 'all':整行/整列全为 NaN 才删除
threshint,可选非空值数量阈值,若某行/列非空值个数 < thresh 则删除
subsetlist-like,可选指定检查哪些列或行(取决于 axis)中的 NaN
inplacebool,默认 False是否在原对象上修改
ignore_indexbool,默认 False是否重置索引(从 0 开始)

✅ 返回值
  • 返回一个新的 DataFrame,其中满足条件的行或列被删除;
  • 如果 inplace=True,则返回 None,原始数据被修改。

🧪 示例代码及结果
示例 1:基本用法 - 删除含有任何 NaN 的行(默认)
import pandas as pd
import numpy as np

df = pd.DataFrame({
    'A': [1, 2, np.nan, 4],
    'B': [5, np.nan, np.nan, 8],
    'C': [9, 10, 11, 12]
})

print("Original DataFrame:")
print(df)

# 删除包含任何 NaN 的行
df_cleaned = df.dropna()
print("\nAfter dropna():")
print(df_cleaned)
输出结果:
Original DataFrame:
     A    B   C
0  1.0  5.0   9
1  2.0  NaN  10
2  NaN  NaN  11
3  4.0  8.0  12

After dropna():
     A    B   C
0  1.0  5.0   9
3  4.0  8.0  12

示例 2:设置 how='all' - 只删除全为 NaN 的行
# 构造一行全为 NaN 的数据
df_with_all_nan = pd.DataFrame({
    'A': [1, np.nan, np.nan, 4],
    'B': [5, np.nan, np.nan, 8],
    'C': [9, np.nan, np.nan, 12]
})

print("Original DataFrame (with all-NaN row):")
print(df_with_all_nan)

# 只删除全为 NaN 的行
df_how_all = df_with_all_nan.dropna(how='all')
print("\nAfter dropna(how='all'):")
print(df_how_all)
输出结果:
Original DataFrame (with all-NaN row):
     A    B     C
0  1.0  5.0   9.0
1  NaN  NaN   NaN
2  NaN  NaN   NaN
3  4.0  8.0  12.0

After dropna(how='all'):
     A    B     C
0  1.0  5.0   9.0
3  4.0  8.0  12.0

示例 3:使用 thresh 参数 - 控制最少非空值数量
# 设置每行至少要有 2 个非空值才保留
df_thresh = df.dropna(thresh=2)
print("\nAfter dropna(thresh=2):")
print(df_thresh)
输出结果:
After dropna(thresh=2):
     A    B   C
0  1.0  5.0   9
1  2.0  NaN  10
3  4.0  8.0  12

第二行只有一列非空(C=11),所以被删除。


示例 4:指定 subset - 仅检查特定列是否有 NaN
# 只检查 'A' 和 'B' 列是否有 NaN
df_subset = df.dropna(subset=['A', 'B'])
print("\nAfter dropna(subset=['A', 'B']):")
print(df_subset)
输出结果:
After dropna(subset=['A', 'B']):
     A    B   C
0  1.0  5.0   9
3  4.0  8.0  12

虽然第三行 C 列没有问题,但因为 AB 有 NaN,所以也被删除。


示例 5:按列删除(axis=1)
# 构造一些列含 NaN
df_col = pd.DataFrame({
    'X': [1, 2, 3],
    'Y': [np.nan, np.nan, np.nan],
    'Z': [7, np.nan, 9]
})

print("Original Column-wise DataFrame:")
print(df_col)

# 删除全为 NaN 的列
df_col_drop = df_col.dropna(axis=1, how='all')
print("\nAfter dropna(axis=1, how='all'):")
print(df_col_drop)
输出结果:
Original Column-wise DataFrame:
   X   Y    Z
0  1 NaN  7.0
1  2 NaN  NaN
2  3 NaN  9.0

After dropna(axis=1, how='all'):
   X    Z
0  1  7.0
1  2  NaN
2  3  9.0

Y 全为 NaN,因此被删除。


示例 6:使用 ignore_index=True 重置索引
# 删除后重置索引
df_reset = df.dropna(ignore_index=True)
print("\nAfter dropna(ignore_index=True):")
print(df_reset)
输出结果:
After dropna(ignore_index=True):
     A    B   C
0  1.0  5.0   9
1  4.0  8.0  12

示例 7:原地修改(inplace=True)
# 原地修改
df.dropna(inplace=True)
print("\nIn-place dropna (modified original):")
print(df)
输出结果(基于示例 1 的数据):
In-place dropna (modified original):
     A    B   C
0  1.0  5.0   9
3  4.0  8.0  12

🧠 应用场景
  • 数据清洗:去除不完整记录;
  • 模型训练前预处理:确保输入数据无缺失;
  • 统计分析:避免因缺失值影响计算结果;
  • 可视化前清理数据:提高图表准确性;
  • 链式调用中快速过滤:如 df.dropna().describe()

⚠️ 注意事项
  • 默认删除行(axis=0),如需删除列请设置 axis=1
  • 使用 how='any' 更严格,how='all' 更宽松;
  • thresh 提供更灵活的控制;
  • subset 可限制检查范围,提升效率;
  • ignore_index=True 可避免后续操作受索引影响;
  • 不会自动排序索引,建议结合 reset_index() 使用;
  • 推荐先查看缺失情况(如 isna().sum())再决定如何处理。

✅ 总结对比
参数功能
how='any'只要有一个 NaN 就删除
how='all'整行/列都为 NaN 才删除
thresh=N至少 N 个非空值才保留
subset=[cols]仅检查指定列/行中的 NaN
axis=1删除列而不是行
ignore_index=True删除后重置索引

你可以根据具体需求选择最适合的参数组合来清理缺失值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2406414.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于django+vue的健身房管理系统-vue

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.8数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat12开发软件&#xff1a;PyCharm 系统展示 会员信息管理 员工信息管理 会员卡类型管理 健身项目管理 会员卡管理 摘要 健身房管理…

Yolo11改进策略:Block改进|FCM,特征互补映射模块|AAAI 2025|即插即用

1 论文信息 FBRT-YOLO&#xff08;Faster and Better for Real-Time Aerial Image Detection&#xff09;是由北京理工大学团队提出的专用于航拍图像实时目标检测的创新框架&#xff0c;发表于AAAI 2025。论文针对航拍场景中小目标检测的核心难题展开研究&#xff0c;重点解决…

简单聊下阿里云DNS劫持事件

阿里云域名被DNS劫持事件 事件总结 根据ICANN规则&#xff0c;域名注册商&#xff08;Verisign&#xff09;认定aliyuncs.com域名下的部分网站被用于非法活动&#xff08;如传播恶意软件&#xff09;&#xff1b;顶级域名DNS服务器将aliyuncs.com域名的DNS记录统一解析到shado…

循环语句之while

While语句包括一个循环条件和一段代码块&#xff0c;只要条件为真&#xff0c;就不断 循环执行代码块。 1 2 3 while (条件) { 语句 ; } var i 0; while (i < 100) {console.log(i 当前为&#xff1a; i); i i 1; } 下面的例子是一个无限循环&#xff0c;因…

机器学习复习3--模型评估

误差与过拟合 我们将学习器对样本的实际预测结果与样本的真实值之间的差异称为&#xff1a;误差&#xff08;error&#xff09;。 误差定义&#xff1a; ①在训练集上的误差称为训练误差&#xff08;training error&#xff09;或经验误差&#xff08;empirical error&#x…

联邦学习带宽资源分配

带宽资源分配是指在网络中如何合理分配有限的带宽资源&#xff0c;以满足各个通信任务和用户的需求&#xff0c;尤其是在多用户共享带宽的情况下&#xff0c;如何确保各个设备或用户的通信需求得到高效且公平的满足。带宽是网络中的一个重要资源&#xff0c;通常指的是单位时间…

今日行情明日机会——20250609

上证指数放量上涨&#xff0c;接近3400点&#xff0c;个股涨多跌少。 深证放量上涨&#xff0c;但有个小上影线&#xff0c;相对上证走势更弱。 2025年6月9日涨停股主要行业方向分析&#xff08;基于最新图片数据&#xff09; 1. 医药&#xff08;11家涨停&#xff09; 代表标…

GC1808:高性能音频ADC的卓越之选

在音频处理领域&#xff0c;高质量的音频模数转换器&#xff08;ADC&#xff09;是实现精准音频数字化的关键。GC1808&#xff0c;一款96kHz、24bit立体声音频ADC&#xff0c;以其卓越的性能和高性价比脱颖而出&#xff0c;成为众多音频设备制造商的理想选择。 GC1808集成了64倍…

生产管理系统开发:专业软件开发公司的实践与思考

生产管理系统开发的关键点 在当前制造业智能化升级的转型背景下&#xff0c;生产管理系统开发正逐步成为企业优化生产流程的重要技术手段。不同行业、不同规模的企业在推进生产管理数字化转型过程中&#xff0c;面临的挑战存在显著差异。本文结合具体实践案例&#xff0c;分析…

VASP软件在第一性原理计算中的应用-测试GO

VASP软件在第一性原理计算中的应用 VASP是由维也纳大学Hafner小组开发的一款功能强大的第一性原理计算软件&#xff0c;广泛应用于材料科学、凝聚态物理、化学和纳米技术等领域。 VASP的核心功能与应用 1. 电子结构计算 VASP最突出的功能是进行高精度的电子结构计算&#xff…

Centos 7 服务器部署多网站

一、准备工作 安装 Apache bash sudo yum install httpd -y sudo systemctl start httpd sudo systemctl enable httpd创建网站目录 假设部署 2 个网站&#xff0c;目录结构如下&#xff1a; bash sudo mkdir -p /var/www/site1/html sudo mkdir -p /var/www/site2/html添加测试…

从数据报表到决策大脑:AI重构电商决策链条

在传统电商运营中&#xff0c;决策链条往往止步于“数据报表层”&#xff1a;BI工具整合历史数据&#xff0c;生成滞后一周甚至更久的销售分析&#xff0c;运营团队凭经验预判需求。当爆款突然断货、促销库存积压时&#xff0c;企业才惊觉标准化BI的决策时差正成为增长瓶颈。 一…

(12)-Fiddler抓包-Fiddler设置IOS手机抓包

1.简介 Fiddler不但能截获各种浏览器发出的 HTTP 请求&#xff0c;也可以截获各种智能手机发出的HTTP/ HTTPS 请求。 Fiddler 能捕获Android 和 Windows Phone 等设备发出的 HTTP/HTTPS 请求。同理也可以截获iOS设备发出的请求&#xff0c;比如 iPhone、iPad 和 MacBook 等苹…

第2课 SiC MOSFET与 Si IGBT 静态特性对比

2.1 输出特性对比 2.2 转移特性对比 2.1 输出特性对比 器件的输出特性描述了当温度和栅源电压(栅射电压)为某一具体数值时,漏极电流(集电极电流

MCP和Function Calling

MCP MCP&#xff08;Model Context Protocol&#xff0c;模型上下文协议&#xff09; &#xff0c;2024年11月底&#xff0c;由 Anthropic 推出的一种开放标准&#xff0c;旨在统一大模型与外部数据源和工具之间的通信协议。MCP 的主要目的在于解决当前 AI 模型因数据孤岛限制而…

解密鸿蒙系统的隐私护城河:从权限动态管控到生物数据加密的全链路防护

摘要 本文以健康管理应用为例&#xff0c;展示鸿蒙系统如何通过细粒度权限控制、动态权限授予、数据隔离和加密存储四大核心机制&#xff0c;实现复杂场景下的用户隐私保护。我们将通过完整的权限请求流程和敏感数据处理代码&#xff0c;演示鸿蒙系统如何平衡功能需求与隐私安…

SFTrack:面向警务无人机的自适应多目标跟踪算法——突破小尺度高速运动目标的追踪瓶颈

【导读】 本文针对无人机&#xff08;UAV&#xff09;视频中目标尺寸小、运动快导致的多目标跟踪难题&#xff0c;提出一种更简单高效的方法。核心创新在于从低置信度检测启动跟踪&#xff08;贴合无人机场景特性&#xff09;&#xff0c;并改进传统外观匹配算法以关联此类检测…

STM32 低功耗设计全攻略:PWR 模块原理 + 睡眠 / 停止 / 待机模式实战(串口 + 红外 + RTC 应用全解析)

文章目录 PWRPWR&#xff08;电源控制模块&#xff09;核心功能 电源框图上电复位和掉电复位可编程电压监测器低功耗模式模式选择睡眠模式停止模式待机模式 修改主频一、准备工作二、修改主频的核心步骤&#xff1a;宏定义配置三、程序流程&#xff1a;时钟配置函数解析四、注意…

持续交付的进化:从DevOps到AI驱动的IT新动能

文章目录 一、持续交付的本质&#xff1a;从手动到自动的交付飞跃关键特性案例&#xff1a;电商平台的高效部署 二、持续交付的演进&#xff1a;从CI到AI驱动的未来发展历程 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/101f72defaf3493ba0ba376bf09367a2.png)中国…

OpenHarmony标准系统-HDF框架之I2C驱动开发

文章目录 引言I2C基础知识概念和特性协议&#xff0c;四种信号组合 I2C调试手段硬件软件 HDF框架下的I2C设备驱动案例描述驱动Dispatch驱动读写 总结 引言 I2C基础知识 概念和特性 集成电路总线&#xff0c;由串网12C(1C、12C、Inter-Integrated Circuit BUS)行数据线SDA和串…