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

【Pandas】pandas DataFrame clip

Pandas2.2 DataFrame

Computations descriptive stats

方法描述
DataFrame.abs()用于返回 DataFrame 中每个元素的绝对值
DataFrame.all([axis, bool_only, skipna])用于判断 DataFrame 中是否所有元素在指定轴上都为 True
DataFrame.clip([lower, upper, axis, inplace])用于截断(限制)DataFrame 中的数值

pandas.DataFrame.clip()

pandas.DataFrame.clip() 方法用于截断(限制)DataFrame 中的数值,将小于下限 lower 的值替换为 lower,大于上限 upper 的值替换为 upper。该方法常用于数据清洗、特征缩放等场景。


一、方法签名
DataFrame.clip(lower=None, upper=None, axis=None, inplace=False)
参数说明:
参数类型描述
lowerfloat 或 array-like, optional下限值。若为标量,则所有元素低于此值将被替换;若为 array-like(如 Series),则按列/行分别设置下限。
upperfloat 或 array-like, optional上限值。用法与 lower 类似。
axis{0/‘index’, 1/‘columns’}, optionallowerupper 是 Series,则指定广播方向:0 表示按行广播(默认),1 表示按列广播。
inplacebool, default: False是否在原 DataFrame 上修改。若为 True,不返回新对象,直接修改原数据。

⚠️ 注意:lowerupper 至少要提供一个。


二、返回值
  • 返回一个新的 DataFrame(或原地修改),其中:
    • 所有小于 lower 的值 → lower
    • 所有大于 upper 的值 → upper

三、使用示例及结果
示例1:基本用法(设定上下限)
import pandas as pddf = pd.DataFrame({'A': [1, 2, 3, 4, 5],'B': [-5, 0, 5, 10, 15]
})# 将数值限制在 [0, 10] 范围内
result = df.clip(lower=0, upper=10)
print(result)

输出:

   A   B
0  1   0
1  2   0
2  3   5
3  4  10
4 10  10

解释:

  • 列 A 中小于 0 的值变为 0,大于 10 的值变为 10。
  • 列 B 同理。

示例2:仅设置下限(lower)
result = df.clip(lower=2)
print(result)

输出:

   A   B
0  2   2
1  2   2
2  3   5
3  4  10
4  5  15

解释:

  • 所有小于 2 的值都被替换为 2。

示例3:仅设置上限(upper)
result = df.clip(upper=10)
print(result)

输出:

   A   B
0  1  -5
1  2   0
2  3   5
3  4  10
4 10  10

解释:

  • 所有大于 10 的值都被替换为 10。

示例4:按列设置不同的上下限(使用 Series)
lower = pd.Series({'A': 2, 'B': 0})
upper = pd.Series({'A': 4, 'B': 10})result = df.clip(axis=1, lower=lower, upper=upper)
print(result)

输出:

   A   B
0  2   0
1  2   0
2  3  5
3  4  10
4  4  10

解释:

  • 每列使用不同的 lowerupper 值进行裁剪。

示例5:按行设置裁剪范围(axis=1
lower_row = pd.Series([1, 0, 2, 5, 10], index=df.index)# 对每一行设置不同的 lower 值,并按行广播
result = df.clip(lower=lower_row, axis=0)
print(result)

输出:

     A     B
0  1.0  1.00
1  2.0  0.00
2  3.0  2.00
3  5.0  5.00
4 10.0 10.00

解释:

  • 每一行使用不同的 lower 值进行裁剪,通过 axis=0 实现按行广播。

四、适用场景
场景描述
数据清洗去除异常值,防止极端值影响模型训练或可视化。
特征工程对连续变量进行裁剪,使其更符合分布假设。
数据标准化在归一化前先对数据做裁剪,避免极大值干扰。

五、注意事项
  • lowerupper 可以是标量或 Series,支持灵活的逐列或逐行设置。
  • 若同时传入 lowerupper,则两者都会生效。
  • 使用 inplace=True 会直接修改原始 DataFrame。
  • 支持 NaN 值,不会改变其位置。

六、总结
特性描述
功能截断 DataFrame 中的数值,限制在指定范围内
适用类型数值型列(int、float)
是否修改原数据默认否,可通过 inplace=True 修改原数据
灵活性支持标量、Series 设置不同列/行的上下限

clip() 是一个非常实用的数据预处理工具,特别适合在机器学习、数据分析中控制数值范围和去除异常值。

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

相关文章:

  • js原型污染 + xss劫持base -- no-code b01lersctf 2025
  • PostgreSQL 18 Beta 1发布,有哪些功能亮点?
  • P2572 [SCOI2010] 序列操作 Solution
  • Shell 脚本编程详细指南:第五章 - 函数与参数传递
  • ROS1 和 ROS2 在同一个系统中使用
  • 分布式ID设计 数据库主键自增
  • 第423题-有效的括号序列
  • 大模型——Trae IDE 指南:轻松配置自定义 AI 规则 (Trae Rules)
  • 阅文集团C++面试题及参考答案
  • 服务器配置错误导致SSL/TLS出现安全漏洞,如何进行排查?
  • 汽车制造行业的数字化转型
  • 华为云Flexus+DeepSeek征文|从开通到应用:华为云DeepSeek-V3/R1商用服务深度体验
  • 【软件设计师:存储】16.计算机存储系统
  • gitlab相关面试题及答案
  • 深入了解 Stable Diffusion:AI 图像生成的奥秘
  • 【论文阅读】——Articulate AnyMesh: Open-Vocabulary 3D Articulated Objects Modeling
  • 聚焦车辆模式管理:概念阐释、测试方案设计与实施
  • 代码随想录第40天:图论1
  • Vue3.5 企业级管理系统实战(十八):用户管理
  • 回顾 Vue 3 基础【Plan - May - Week 1】
  • 零基础学Java——第十一章:实战项目 - 控制台应用开发
  • 力扣-2.两数相加
  • WPF内嵌其他进程的窗口
  • 鸿蒙NEXT开发动画案例5
  • tomcat6性能优化
  • MySQL 数据库操作
  • uniapp小程序轮播图高度自适应优化详解
  • 使用Python 打造多格式文件预览工具 — 图、PDF、Word、Excel 一站式查看
  • Java SE(10)——抽象类接口
  • 高效C/C++之十:Coverity修复问题:尽量多使用 c++强制类型转化