Pandas 시리즈의 값을 사전으로 바꾸기 위한 성능 고려 사항
Pandas 시리즈의 값을 사전으로 바꾸는 것은 지속적인 관심사였습니다. 커뮤니티. 권장되는 방법은 s.replace(d) 또는 s.map(d)이지만 데이터 세트의 특성에 따라 성능이 크게 달라질 수 있습니다.
벤치마킹
성능 차이를 설명하기 위해 0에서 999 사이의 임의의 정수를 포함하는 DataFrame df를 고려해 보겠습니다.
import pandas as pd, numpy as np df = pd.DataFrame({'A': np.random.randint(0, 1000, 1000000)})
일반 사례
값을 매핑하는 사전 d를 생성하는 경우 그 후속 항목(예: d = {i: i 1 for i in range(1000)})에서는 다음을 관찰합니다.
# Full-range dictionary %timeit df['A'].replace(d) # 1.98s %timeit df['A'].map(d) # 84.3ms # Partial-range dictionary d = {i: i+1 for i in range(10)} %timeit df['A'].replace(d) # 20.1ms %timeit df['A'].map(d).fillna(df['A']).astype(int) # 111ms
최적 방법 선택
기반 벤치마킹을 통해 s.map이 두 시나리오 모두에서 우수하다는 것이 분명해졌습니다.
s.replace가 느린 이유는 무엇인가요?
s.replace는 s.map보다 더 광범위한 작업을 수행합니다. 여기에는 사전을 목록으로 변환하고 이를 반복하며 교체를 수행하기 전에 중첩된 사전을 확인하는 과정이 포함됩니다.
반대로 s.map은 주어진 인수가 사전인지 시리즈인지 확인하고 다음과 같은 경우 변환합니다. 필요한. 인덱스를 기반으로 값을 효율적으로 매핑합니다.
대체 옵션
성능이 중요한 특정 경우:
결론
Pandas 시리즈의 값을 사전으로 바꾸는 최적의 선택은 다음 요소에 따라 달라집니다. DataFrame의 크기, 사전의 고유 값 수, 매핑의 완전성 등이 이에 해당합니다. 개발자는 이러한 요소를 신중하게 고려하여 특정 상황에 가장 효율적인 방법을 선택할 수 있습니다.
위 내용은 일련의 사전 기반 값 대체에 어떤 Pandas 방법이 더 성능이 좋나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!