>  기사  >  백엔드 개발  >  부울 인덱싱을 사용하여 Pandas 데이터 구조를 효율적으로 필터링하는 방법은 무엇입니까?

부울 인덱싱을 사용하여 Pandas 데이터 구조를 효율적으로 필터링하는 방법은 무엇입니까?

DDD
DDD원래의
2024-10-20 12:53:29754검색

How to Efficiently Filter Pandas Data Structures Using Boolean Indexing?

부울 인덱싱을 사용한 Pandas 데이터 구조의 효율적인 필터링

데이터 조작에 널리 사용되는 Python 라이브러리인 Pandas는 DataFrames 및 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 함수는 부울 계열 객체를 생성하고 f 함수는 NumPy의 논리 연산자를 사용하여 이를 결합합니다. 결과는 지정된 기준을 충족하는 행만 포함하는 새로운 DataFrame입니다.

향상된 성능을 위한 Pandas의 쿼리 방법

Pandas 버전 0.13 이상에서는 쿼리 방법이 명시적으로 쿼리 방법에 대한 대안을 제공합니다. 부울 시리즈를 결합합니다. 효율적인 평가를 위해 NuMexpr을 활용하고 더 간단한 구문을 제공합니다.

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

DataFrames에 대한 확장성

Series 객체에 대해 설명된 기술은 DataFrames로 쉽게 확장될 수 있습니다. 적용하는 모든 필터는 원본 DataFrame에서 작동하여 결과를 점진적으로 좁힙니다.

부울 인덱싱과 Pandas의 최적화된 알고리즘을 활용하면 성능 저하 없이 데이터 구조에 여러 필터를 효율적으로 적용할 수 있습니다.

위 내용은 부울 인덱싱을 사용하여 Pandas 데이터 구조를 효율적으로 필터링하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.