ホームページ >バックエンド開発 >Python チュートリアル >ブールインデックスを使用して 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 バージョン 0.13 以降では、クエリ メソッドは明示的なクエリ メソッドの代替手段を提供します。ブール級数を組み合わせます。 NuMexpr を活用して効率的な評価を行い、よりシンプルな構文を提供します。
<code class="python">filtered_df = df.query('col1 <= 1 & 1 <= col1')</code>
Series オブジェクトについて説明した手法は、DataFrame に簡単に拡張できます。適用するすべてのフィルターは元の DataFrame に作用し、結果を段階的に絞り込みます。
ブール型インデックスと Pandas の最適化されたアルゴリズムを活用することで、パフォーマンスを損なうことなく、データ構造に複数のフィルターを効率的に適用できます。
以上がブールインデックスを使用して Pandas データ構造を効率的にフィルタリングする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。