pandas.apply()는 강력한 도구입니다. 사용자가 DataFrame 또는 Series의 행이나 열에 함수를 적용할 수 있게 해줍니다. 그러나 다른 방법에 비해 속도가 느린 것으로 알려져 언제 사용해야 하며 피해야 하는지에 대한 의문이 제기됩니다. 이 문서에서는 apply()의 성능 문제에 대한 이유를 조사하고 이를 사용하지 않는 방법에 대한 실용적인 지침을 제공합니다.
apply()는 다음에 대한 결과를 계산합니다. 각 행이나 열을 개별적으로 처리하므로 벡터화된 작업을 사용할 수 있는 경우 비효율적일 수 있습니다. 또한 apply()는 정렬 처리, 복잡한 인수 처리 및 메모리 할당으로 인해 오버헤드를 발생시킵니다.
가능한 경우 벡터화된 대안을 사용하세요. NumPy 또는 pandas의 자체 벡터화 함수에서 제공하는 것과 같은 작업은 전체 배열에서 동시에 작동하여 상당한 성능을 제공합니다.
문자열 조작에는 apply()를 사용하지 마세요. Pandas는 벡터화되어 문자열 기반 apply() 호출보다 빠른 최적화된 문자열 함수를 제공합니다.
열 폭발에는 목록 이해를 사용하십시오. apply()를 사용하여 목록의 열을 폭발시키는 것은 비효율적입니다. 목록 이해를 사용하거나 열을 목록으로 변환하고 이를 pd.DataFrame()에 전달하는 것을 선호합니다.
DataFrame에 대해 벡터화되지 않은 함수 . Series에 대해서는 벡터화되지만 DataFrame에는 벡터화되지 않는 함수가 있습니다. 예를 들어 pd.to_datetime()을 apply()와 함께 사용하여 여러 열을 날짜/시간으로 변환할 수 있습니다.
행별 처리가 필요한 복잡한 함수. 어떤 경우에는 행 단위 처리가 필요한 복잡한 함수를 적용해야 할 수도 있습니다. 그러나 가능하면 이 작업을 피해야 합니다.
벡터화된 GroupBy 작업을 사용합니다. GroupBy 작업에는 더 효율적일 수 있는 벡터화된 대안이 있습니다.
연결된 변환에는 apply()를 사용하지 마세요. 여러 작업 연결 GroupBy.apply() 내에서 불필요한 반복이 발생할 수 있습니다. 가능하면 별도의 GroupBy 호출을 사용하십시오.
apply()는 첫 번째 행에서 두 번 작동합니다. 함수에 부작용이 있는지 확인해야 합니다. 성능에 영향을 미칩니다.
메모리 소비. apply()는 상당한 양의 메모리를 소비하므로 메모리 바인딩된 애플리케이션에는 적합하지 않습니다.
pandas.apply()는 접근 가능한 함수이지만 성능 제한을 신중하게 고려해야 합니다. 성능 문제를 방지하려면 벡터화된 대안을 식별하고, 문자열 조작을 위한 효율적인 옵션을 탐색하고, 다른 옵션을 사용할 수 없을 때 apply()를 신중하게 사용하는 것이 중요합니다. 비효율적인 이유를 이해함으로써 개발자는 효율적이고 유지 관리가 가능한 Pandas 코드를 작성할 수 있습니다.
위 내용은 언제 pandas.apply()를 사용해야 하고 언제 피해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!