首页  >  文章  >  后端开发  >  如何使用布尔索引有效过滤 Pandas 数据结构?

如何使用布尔索引有效过滤 Pandas 数据结构?

DDD
DDD原创
2024-10-20 12:53:29653浏览

How to Efficiently Filter Pandas Data Structures Using Boolean Indexing?

使用布尔索引有效过滤 Pandas 数据结构

Pandas 是一个流行的 Python 数据操作库,提供了过滤 DataFrame 和 Series 对象的有效方法。当需要连续应用多个过滤器时,必须优化流程以避免不必要的数据复制。

布尔索引:一种高级方法

使用 reindex() 的传统方法会导致数据重复和对于大型数据集来说效率很低。布尔索引是 Pandas 和 NumPy 的一项功能,提供了一种更快的替代方案。

考虑以下示例:

<code class="python">import pandas as pd

df = pd.DataFrame({'col1': [0, 1, 2], 'col2': [10, 11, 12]})

def b(x, col, op, n): 
    return op(x[col],n)

def f(x, *b):
    return x[(np.logical_and(*b))]

b1 = b(df, 'col1', ge, 1)
b2 = b(df, 'col1', le, 1)

filtered_df = f(df, b1, b2)</code>

此方法使用布尔索引来有效地执行过滤操作。 b 函数创建 Boolean Series 对象,f 函数使用 NumPy 的逻辑运算符将它们组合起来。结果是一个新的 DataFrame,其中仅包含满足指定条件的行。

Pandas 增强性能的查询方法

在 Pandas 0.13 及更高版本中,查询方法提供了显式的替代方法结合布尔级数。它利用 NuMexpr 进行高效评估,并提供更简单的语法:

<code class="python">filtered_df = df.query('col1 <= 1 &amp; 1 <= col1')</code>

对 DataFrame 的扩展性

针对 Series 对象描述的技术可以轻松扩展到 DataFrame。您应用的每个过滤器都会作用于原始 DataFrame,逐步缩小结果范围。

通过利用布尔索引和 Pandas 的优化算法,您可以有效地将多个过滤器应用于数据结构,而不会影响性能。

以上是如何使用布尔索引有效过滤 Pandas 数据结构?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn