Pandas基础:查找与输入最接近的值

2022-06-04 09:39:49 浏览数 (1)

标签:Python,Pandas

本文介绍在pandas中如何找到与给定输入最接近的值。

有时候,我们试图使用一个值筛选数据框架,但是这个值不存在,这样我们会接收到一个空的数据框架,这不是我们想要的。我们想要的是,在数据框架中找到与这个输入值最接近的值。

下面是一个简单的数据集,将用于演示这项技术。假设有5天的SPY股票(假想)价格。

图1

假设我们想要找到与价格386最接近的值所在的行。通过观察,我们注意到有两个值与386接近,即390和380。显然,390比380更接近于386。

在这种情况下,我们不能使用大于“>”或小于“<”之类的筛选器,因为不知道匹配值是高于还是低于给定的输入值386。

过程

1.计算每个值与输入值之差。

2.使用差的绝对值,以帮助排名,因为可能有正数和负数。

3.对上述第2步的结果进行排序,绝对差值最小的记录就是最接近输入值的记录。

下面显示了上述第2步的结果:

图2

接下来,可以对数据框架使用sort_values(),然后找到第一个(最低值的)条目。然而,有更好的方法。

pandas argsort()方法

argsort()方法返回将对值进行排序的整数索引。例如:

图3

看起来可能有点混乱,尤其是当看带有日期栏的排名时。

1.在右侧,原始数据框架(或绝对差数据框架,因为它们的索引相同)有一个数字索引0,1,2,3,4。

2.在左侧,忽略索引/日期列,argsort()按顺序返回数字索引

3.如果将此顺序应用于原始数据框架,正如下面几行所示,那么我们可以对数据框架进行排序:

值4(2022-05-08)行应该转到第一个位置

值6(2022-05-10)行应该转到第二个位置

……

值64(2022-05-11)行应该转到最后一个位置

图4

然后,可以使用iloc[]属性重新组织数据框架:

图5

如果我们只想要得到最接近的值,而不是整个排序的数据框架:

图6

注:本文学习整理自pythoninoffice.com,供有兴趣的朋友学习参考。

0 人点赞