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

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

相关文章:

  • GET请求如何传复杂数组参数
  • 使用oracle goldengate同步postgresql到postgresql
  • Eclipse SWT 1 等比缩放
  • Web端项目系统访问页面很慢,后台数据返回很快,网络也没问题,是什么导致的呢?
  • 文件包含2
  • OpenCV的 ccalib 模块用于自定义标定板的检测和处理类cv::ccalib::CustomPattern()----函数calibrate
  • 火山引擎火山云主推产品
  • wpf UserControl 更换 自定义基类
  • PX4开始之旅(一)自动调参
  • Windows10 本地部署 IPFS(go-ipfs)
  • NX884NX891美光固态闪存NX895NX907
  • 汽车租赁|基于Java+vue的汽车租赁系统(源码+数据库+文档)
  • 【日撸 Java 三百行】Day 7(Java的数组与矩阵元素相加)
  • RT-Thread 深入系列 Part 1:RT-Thread 全景总览
  • Xterminal(或 X Terminal)通常指一类现代化的终端工具 工具介绍
  • 自定义装饰器
  • 使用AES-CBC + HMAC-SHA256实现前后端请求安全验证
  • P11369 [Ynoi2024] 弥留之国的爱丽丝(操作分块,DAG可达性trick)
  • 太阳能板结构及发电原理与输出特性分析——以杭州 5V 太阳能板为例
  • 北斗导航 | RTKLib中模糊度解算详解,公式,代码
  • 要更加冷静地看待“东升西降”的判断
  • 中俄就应对美加征所谓“对等关税”等问题进行深入交流
  • 欧洲史上最严重停电事故敲响警钟:能源转型如何保证电网稳定?
  • 第32届梅花奖终评启幕,上海京剧院《智取威虎山》满堂彩
  • 民生访谈|今年上海还有哪些重要演出展览?场地配套如何更给力?
  • 李云泽:大型保险集团资本补充已经提上日程