Pandas.Series.clip() 修剪数值范围 详解 含代码 含测试数据集 随Pandas版本持续更新

关于Pandas版本: 本文基于 pandas2.2.0 编写。

关于本文内容更新: 随着pandas的stable版本更迭,本文持续更新,不断完善补充。

传送门: Pandas API参考目录

传送门: Pandas 版本更新及新特性

传送门: Pandas 由浅入深系列教程

本节目录

  • Pandas.Series.clip()
    • 语法:
    • 返回值:
    • 参数说明:
      • lower 最小边界
      • upper 最大边界
      • axis 指定修剪方向(行或列)
      • inplace 原地修改正
    • 相关方法:
    • 示例:
      • 例1:小于最小边界的数据值,修剪为边界值
      • 例2:传递 `array-like` 的各种注意事项
      • 例3: `lower` 参数可以和 `upper` 参数一起使用
      • 例4:在原数据里直接修剪

Pandas.Series.clip()

Pandas.Series.clip 根据指定的边界,修剪数据的最大最小范围。

  • 若指定了最小边界 lower ,沿轴数据中比 lower 小的值,会被替换为 lower
  • 若指定了最大边界 upper ,沿轴数据中比 upper 大的值,会被替换为 upper

语法:

Series.clip(lower=None, upper=None, *, axis=None, inplace=False, **kwargs)

返回值:

  • Series or Series or None

    • 返回类型与调用者一致,若 inplace=True 则返回 None

参数说明:

lower 最小边界

  • lower : float or array-like, default None >

    lower 参数,用于指定数据的最小边界,数据中比 lower 小的值,会被替换为 lower,默认 lower=None 表示不限制最小边界:

    lower 参数可以和 upper 参数一起使用。 例3

    • float: 指定一个浮点数(整数也行),作为最小边界。例1
    • array-like: 指定一个 array-like 作为最小边界。这可以做到按指定位置修剪。

      ⚠️ 注意 :

      传递 array-like 后的工作原理:

      如果传递 array-like , Series 里的数值,和边界比较大小的过程,是逐个元素进行的:

      1. Series 里的第1个元素,和 array-like 里的第1个元素比较;
      2. Series 里的第2个元素,和 array-like 里的第2个元素比较;
      3. 直到所有元素比较完成。

      传递 array-like 的注意事项:

      1. 📌 在未来版本中,Series.clip 不再自行推断数据类型,如果准备修剪的数据不是 浮点数float,并且你在lowerupper参数中传递了array-like

        1. 你会收到最多两条 FutureWarning,但是在当前版本并不影响程序运行。 其一来自 不是浮点数类型 Series,另一个会来自你传递给lowerupper 参数的 包含了pd.NAarray-like! 需要注意的是,np.NaNpd.NA 的区别。例2-1
        2. 如果你无法忍受这个提示,推荐方法是,把Series需要修剪的数据,使用astype 转为 浮点数float。并使用 np.NaN 作为缺失值,而不是 pd.NA例2-2
      2. array-like 如果有缺失值, 此缺失值,对应的Series里的数值,将不会被修剪。例2-3

      3. array-like 的长度,必须和 Series 的行列(依 axis 参数指定)等长,否则报错 ValueError

      4. 原理上 array-like 包含 list ,但是如果涉及到计算,则必须使用能支持缺失值的结构,比如 ndarraySeries 等。建议是直接转为 Series,再用于修剪,因为即使你不转换,pandas也会自行转换为Series例2-4

      传递 array-like 的意义:

      1. 通过 传递 array-like 可以实现 Series 每一个元素,都有自己的 专属边界 ,做到按位置精准修剪。
      2. 通过 传递 array-like 可以实现 Series 某个位置的数值不被修剪(该数值在array-like里,对应 NaN,即可以不被修剪)

upper 最大边界

  • upper : float or array-like, default None

    upper 参数,用于指定数据的最大边界,沿轴数据中比 upper 大的值,会被替换为 upper,默认 upper=None 表示不限制最大边界:

    upper 参数可以和 lower 参数一起使用。 例3

    • float: 指定一个浮点数(整数也行),作为最小边界
    • array-like: 指定一个 array-like 作为最大边界。这可以做到按指定位置修剪。

      ⚠️ 注意 :

      注意内容,与 lower 参数的注意内容一致。

axis 指定修剪方向(行或列)

  • axis : {0 or ‘index’, 1 or ‘columns’}, default 0

    axis 参数,对于 Series 无效。

inplace 原地修改正

  • inplace : bool, default False 例4

    inplace : 用于控制是否原地修改(在原 Series 直接修剪数据),默认 inplace=False

    • False 不原地修改,会生成原 Series 的视图。
    • True 原地修改(在原 Series 直接修剪数据),使修剪直接在原数据里生效。

相关方法:

➡️ 相关方法


  • DataFrame.clip

    修剪

示例:

测试文件下载:

本文所涉及的测试文件,如有需要,可在文章顶部的绑定资源处下载。

若发现文件无法下载,应该是资源包有内容更新,正在审核,请稍后再试。或站内私信作者索要。

测试文件下载位置.png

测试文件下载位置

例1:小于最小边界的数据值,修剪为边界值

例1-1 构建演示数据

import pandas as pd

data = [9, -3, 0, -1, 5]
s = pd.Series(data)

s
0    9
1   -3
2    0
3   -1
4    5
dtype: int64

例1-2 指定最小边界为 -1 ,则小于 -1 的数据值,都会被替换为 -1

s = s.clip(-1)  # 等效于s.clip(lower=-1)
s
0    9
1   -1
2    0
3   -1
4    5
dtype: int64

例2:传递 array-like 的各种注意事项


例2-1 如果准备修剪的数据不是 浮点数float,并且你在lowerupper参数中传递了array-like则会收到版本提示 FutureWarning

import numpy as np
import pandas as pd

s2 = pd.Series({"第1列": [-5, -4, 0, 4, 5]})

list_for_clip = [-2, np.Na, 0, 1, 2]

s2 = s2.clip(list_for_clip)  # 等效于s2.clip(lower=list_for_clip)
s2
---------------------------------------------------------------------------

AttributeError                            Traceback (most recent call last)

Cell In[14], line 6
      2 import pandas as pd
      4 s2 = pd.Series({"第1列": [-5, -4, 0, 4, 5]})
----> 6 list_for_clip = [-2, np.Na, 0, 1, 2]
      8 s2 = s2.clip(list_for_clip)  # 等效于s2.clip(lower=list_for_clip)
      9 s2


File D:\ProgramData\miniconda3\envs\python3.12\Lib\site-packages\numpy\__init__.py:347, in __getattr__(attr)
    344     "Removed in NumPy 1.25.0"
    345     raise RuntimeError("Tester was removed in NumPy 1.25.")
--> 347 raise AttributeError("module {!r} has no attribute "
    348                      "{!r}".format(__name__, attr))


AttributeError: module 'numpy' has no attribute 'Na'


例2-2 转换 Series 数据类型为 float,并使用 np.NaN 作为缺失值,就不会有版本提示了。

import numpy as np
import pandas as pd

s3 = pd.Series([-5, -4, 0, 4, 5]).astype(float)

list_for_clip = [-2, np.NaN, 0, 1, 2]

s3 = s3.clip(list_for_clip)  # 等效于s43.clip(lower=list_for_clip)
s3
0   -2.0
1   -4.0
2    0.0
3    4.0
4    5.0
dtype: float64


例2-3 如果 array-like 包含缺失值,那么其在 Series 中对应的元素,不会被修剪。例如,我不想 Series 的 -4 被修剪,可以把array-like的对应位置指定为缺失值。

import numpy as np
import pandas as pd

s4 = pd.Series([-5, -4, 0, 4, 5]).astype(float)

list_for_clip = [-2, np.NaN, 0, 1, 2]

s4 = s4.clip(list_for_clip)  # 等效于s4.clip(lower=list_for_clip)
s4
0   -2.0
1   -4.0
2    0.0
3    4.0
4    5.0
dtype: float64


例2-4 如果涉及到计算,则必须使用能支持缺失值的结构,比如 ndarraySeries 等。

import numpy as np
import pandas as pd

s5 = pd.Series([-5, -4, 0, 4, 5]).astype(float)

list_for_clip = pd.Series([-2, np.NaN, 0, 1, 2])

s5 = s5.clip(list_for_clip + 1)  # 等效于s5.clip(lower=list_for_clip +1 )
s5
0   -1.0
1   -4.0
2    1.0
3    4.0
4    5.0
dtype: float64

例3: lower 参数可以和 upper 参数一起使用

import numpy as np
import pandas as pd

s7 = pd.Series([-5, -4, 0, 4, 5]).astype(float)

list_for_clip = pd.Series([-2, np.NaN, 0, 1, 2])

s7 = s7.clip(list_for_clip, list_for_clip + 1, axis=0)  # 等效于s7.clip(lower=list_for_clip,upper=list_for_clip + 1, axis=0)
s7
0   -2.0
1   -4.0
2    0.0
3    2.0
4    3.0
dtype: float64

例4:在原数据里直接修剪

import numpy as np
import pandas as pd

s8 = pd.Series([-5, -4, 0, 4, 5]).astype(float)

list_for_clip1 = pd.Series([-2, np.NaN, 0, 1, 2])

s8.clip(list_for_clip1, inplace=True, axis=0)  # 等效于s8.clip(lower=list_for_clip1, inplace=True, axis=0)

s8
0   -2.0
1   -4.0
2    0.0
3    4.0
4    5.0
dtype: float64

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

虚幻UE5Matehuman定制自己的虚拟人,从相机拍照到UE5制作全流程

开启自己的元宇宙,照片扫描真实的人类,生成虚拟形象,保姆级教程,欢迎大家指正。 需要的软件: 制作流程: 一.拍照。 围绕自己拍照,大概20多张图就差不多了,把脑门漏出来,无需拍后脑勺。 拍照方式 例如,拍照时尽量不要在脸上体现出明显的光源方向。

低版本MATLAB打开高版本Simulink文件的方法

打开simulink,依次点击“建模”、“环境”、“simulink预设项”,如图所示: 然后在弹出的窗口中,点击“模型文件”,并取消勾选“不要加载用更新版本的simulink创建的模型”,接着点击“应用”即可。如图所示&…

使用unicorn模拟执行去除混淆

0. 前言 在分析某app的so时遇到了间接跳转类型的混淆,不去掉的话无法使用ida f5来静态分析,f5之后就长下面这样: 本文记录一下使用pythonunicorn模拟执行来去掉混淆的过程。 1. 分析混淆的模式 混淆的汇编代码如下: 可以看到…

《计算机网络简易速速上手小册》第7章:云计算与网络服务(2024 最新版)

文章目录 7.1 云服务模型(IaaS, PaaS, SaaS)- 你的技术魔法盒7.1.1 基础知识7.1.2 重点案例:构建和部署 Python Web 应用实现步骤具体操作步骤1:创建 Flask Web 应用步骤2:准备应用部署 7.1.3 拓展案例1:使…

机器学习5-线性回归之损失函数

在线性回归中,我们通常使用最小二乘法(Ordinary Least Squares, OLS)来求解损失函数。线性回归的目标是找到一条直线,使得预测值与实际值的平方差最小化。 假设有数据集 其中 是输入特征, 是对应的输出。 线性回归的…

查看docker服务的IP地址

要查看Docker容器服务的IP地址,可以使用以下命令: 如果你知道容器名称或容器ID,直接通过容器ID或容器名称来获取IP地址: # 使用容器ID获取IP地址 docker inspect -f {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}} …

cesium-加载谷歌影像

cesium在开发的时候有可能会加载不同的影像&#xff0c;今天就先看一下加载谷歌的吧。 使用谷歌有个好处就是基本不会出现此区域无卫星图的情况 闲言话语不多说&#xff0c;看代码 <template><div id"cesiumContainer" style"height: 100vh;"&g…

【SpringBoot】application配置文件(4)

freemarker:cache: false 这是关于 freemarker 模板引擎的一个配置&#xff0c;用于控制模板的缓存行为 当cache 设置为 false 时&#xff0c;意味着每次请求时都会重新加载和编译模板&#xff0c;而不是从缓存中获取 编译模板。 将 cache 设置为 false 是为了在开发过程中获…

python求解中位数

首先将数组nums进行排序&#xff0c;然后找到中间位置的数值 如果数组长度n为奇数&#xff0c;则(n1)/2处对应值为中位数&#xff0c;如果数组下标从0开始&#xff0c;还需要减去1 如果数组长度n为偶数&#xff0c;则n/2,n/21两个位置数的平均值为中位数 假设中位数为x&#x…

机器学习复习(2)——线性回归SGD优化算法

目录 线性回归代码 线性回归理论 SGD算法 手撕线性回归算法 模型初始化 定义模型主体部分 定义线性回归模型训练过程 数据demo准备 模型训练与权重参数 定义线性回归预测函数 定义R2系数计算 可视化展示 预测结果 训练过程 sklearn进行机器学习 线性回归代码…

CSC联合培养博士申请亲历|联系外导的详细过程

在CSC申报的各环节中&#xff0c;联系外导获得邀请函是关键步骤。这位联培博士同学的这篇文章&#xff0c;非常详细且真实地记录了申请过程、心理感受&#xff0c;并提出有益的建议&#xff0c;小编特推荐给大家参考。 2024年国家留学基金委公派留学项目即将开始&#xff0c;其…

网络原理TCP/IP(2)

文章目录 TCP协议确认应答超时重传连接管理断开连接 TCP协议 TCP全称为"传输控制协议(Transmission Control Protocol").⼈如其名,要对数据的传输进⾏⼀个详细 的控制; TCP协议段格式 • 源/目的端口号:表⽰数据是从哪个进程来,到哪个进程去; • 32位序号/32位确认…

会声会影下载 Corel VideoStudio 2023 v26.1.0.268中文激活版

会声会影Corel VideoStudio 2023破解版是领先的视频编辑和转换软件&#xff01;提供直观友好的功能&#xff0c;让用户能够更快速便捷地制作独特的视频&#xff0c;高质量的效果&#xff0c;各种滤镜、贴纸、过渡、模板等都将让您事半功倍&#xff01;软件允许您导入自己的剪辑…

社区店加盟:如何选择适合的品牌和项目?

在当下创业热潮中&#xff0c;社区店加盟成为了许多创业者的首选。特别是鲜奶吧这种深受各年龄段人群喜爱的项目&#xff0c;更是备受关注。然而&#xff0c;面对众多品牌和项目&#xff0c;如何选择适合自己的社区店加盟品牌和项目呢&#xff1f; 作为一位资深的鲜奶吧创业者…

关于node.js奇数版本不稳定 将11.x.x升级至16.x.x不成功的一系列问题(一)

据说vue2用16稳定一些 vue3用18好一点&#xff08;但之前我vue3用的16.18.1也可以&#xff09; 为维护之前的老项目 先搞定node版本切换 下载nvm node版本管理工具 https://github.com/coreybutler/nvm-windows/releases 用这个nvm-setup.zip安装包 安之前最好先将之前的nod…

西瓜书学习笔记——k近邻学习(公式推导+举例应用)

文章目录 算法介绍实验分析 算法介绍 K最近邻&#xff08;K-Nearest Neighbors&#xff0c;KNN&#xff09;是一种常用的监督学习算法&#xff0c;用于分类和回归任务。该算法基于一个简单的思想&#xff1a;如果一个样本在特征空间中的 k k k个最近邻居中的大多数属于某个类别…

git命令上传本地项目到远程仓库的悲惨遭遇

git命令上传本地项目到远程仓库的悲惨遭遇。我想把前端后端合并到一个仓库下2个分支&#xff0c;结果呢&#xff0c;不仅合并没有成功&#xff0c;还把代码丢失了。 如图&#xff0c;原始我写好了完整的后端代码&#xff0c;都丢失了。 远程仓库里也都没有了。奇怪了。 难道远…

二、Java学习 数据类型与变量

目录 一、字面常量 二、数据类型 三、变量 语法格式 四、类型转换 隐式类型转换 强制类型转换 字符串类型 五、类型提升 1.int与long 2.byte与byte 小结 一、字面常量 常量即运行期间&#xff0c;固定不变的量。 字面常量的分类&#xff1a; 1.字符串常量&#xff…

TQ15EG开发板教程:开发板资源介绍

时钟资源 采用时钟芯片CDCM6208提供系统时钟 PL端时钟 PS 收发器时钟 PL收发器时钟 电源 BANK500 BANK501 BANK502 BANK503(专用) 1.8V 1.8V 1.8V 1.8V PS端外设 QSPI 采用2片MT25QU256 拼接成8bit的QSPI存储系统。采用1.8V供电 SD卡 SATA接口 PS端以太网接口 D…

Java宝典-数据类型

目录 1.变量与常量2.Java中的数据类型3.整型3.1 字节型byte3.2 短整型short3.3 整型int3.4 长整型long 4.浮点型4.1 单精度浮点型float4.2 双精度浮点型double 5.字符型6.布尔型7.类型转换7.1 隐式类型转换7.2 显示类型转换(强制类型转换) 8.类型提升 大家好,我是你们的Vampire…
最新文章