这篇文章的作者(我们今天将要翻译的译本)说,当他发现自己想在这里谈论的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方法吗?
