您可能不知道的三种熊猫方法

这篇文章的作者(我们今天将要翻译的译本)说,当他发现自己想在这里谈论的Pandas库的方法时,他感到自己像一个完全没有能力的程序员。 怎么了 事实是,当他之前编写代码时,他懒得去研究搜索引擎并找出是否有解决某些问题的有效方法。 结果,他甚至不知道存在许多非常有用的Pandas方法。 在不使用这些方法的情况下,他仍然能够实现必要的逻辑,但这需要他花费几个小时的工作,这使他感到紧张。 当然,在此过程中,他编写了许多不必要的代码。 他为那些不想陷入困境的人准备了这篇文章。



idxmin()和idxmax()方法


我已经写过关于idxmin()idxmax()方法的文章,但是如果我在这里不讨论它们,您将不容易理解我们稍后将讨论的内容。

简而言之,这些方法将返回所需记录的索引(指针位置)。 假设我创建了以下Series Pandas对象。

  x = pd.Series ([ 1, 3, 2, 8, 124, 4, 2, 1 ]) 

我需要找到最小和最大元素的索引。 当然,仅通过查看对象的描述就可以发现问题,但在实际项目中,从来没有(完全像这样-“从不”)不满足由这么少的元素组成的数据集。

怎么办 使用idxmin()idxmax()方法。 看起来是这样的:



使用这些方法,您一定不要忘记它们返回第一次出现的最小值或最大值的索引。

Ne()方法


ne()方法对我来说是一个巨大的发现。 前一段时间,我正在处理数据时间序列,当前n观测值为0时遇到一个问题。

想象一下您买了东西,但在一定时间内没有消费。 您所购买的东西随时都可以使用,但是由于您没有使用它,因此它在特定日期的消费水平为0。由于我对实际开始使用时获得的消费数据感兴趣,因此“购买”,结果证明ne()方法正是我所需要的。

请考虑以下情形。 我们有一个Pandas DataFrame对象,其中包含一些观察结果,该观察结果在列表顶部以0值表示。
 df = pd.DataFrame() 



只有在调用此方法时当前值不是指定的值(例如,当调用该方法时,可以指定值0)时, ne()方法才会返回True ;否则,它返回False
 df['X'].ne(0) 


仅此方法不能被称为特别有用。 现在,请记住在文章开头我曾说过,要理解该文章,您需要熟悉idxmax()方法。 那时我不是在开玩笑。 您可以将idxmax()调用附加到上述ne()调用中。 结果如下:
 df['X'].ne(0).idxmax() 


这告诉我们第一个非零的观察结果位于位置6。同样,这似乎不是一个如此重要的发现。 但是,这里最重要的是,此信息可用于选择DataFrame对象的子集,并仅显示从检测到的位置开始出现的那些值:
 df.loc[df['X'].ne(0).idxmax():] 


在许多必须使用时间序列数据的情况下,此技术非常有用。

Nsmallest()和nlargest()方法


我怀疑只有看到这些方法的名称后,您才能猜出它们的用途。 假设我创建了以下DataFrame
 df = pd/DataFrame({ 'Name': ['Bob', 'Mark', 'Steph', 'Jess', 'Becky'], 'Points': [55, 98, 46, 77, 81] }) 


为了使它更有趣,假设这是一些学生通过的测试结果。 我们想找到三名在测试中表现最差的学生:
 df.nsmallest(3, 'Points') 


或者-找出谁在前三名中:
 df.nlargest(3, 'Points') 


这些方法可以很好地替代sort_values()类的方法。

总结


在这里,我们研究了一些有用的Pandas方法。 对于那些了解它们的人来说,它们的应用似乎是完全自然的,但是对于那些刚刚了解它们的人来说,它们看起来像是一个真正的发现。 我们希望他们能为您服务。

亲爱的读者们! 知道其他人可能不知道的一些有用的Pandas方法吗?


Source: https://habr.com/ru/post/zh-CN479276/


All Articles