ホームページ  >  記事  >  バックエンド開発  >  ブールインデックスを使用して Pandas データ構造を効率的にフィルタリングする方法

ブールインデックスを使用して Pandas データ構造を効率的にフィルタリングする方法

DDD
DDDオリジナル
2024-10-20 12:53:29653ブラウズ

How to Efficiently Filter Pandas Data Structures Using Boolean Indexing?

ブールインデックスを使用した Pandas データ構造の効率的なフィルタリング

データ操作用の人気のある Python ライブラリである Pandas は、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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。