首頁  >  文章  >  後端開發  >  如何使用布林索引有效過濾 Pandas 資料結構?

如何使用布林索引有效過濾 Pandas 資料結構?

DDD
DDD原創
2024-10-20 12:53:29757瀏覽

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