두 가지 모두 어느 시점에서 둘 중 무엇을 선택해야 할지 의심하게 만들 수 있는 광범위한 도구와 장점을 제공합니다. Polars를 사용하기 시작하거나 Pandas를 "죽음"으로 만들기 위해 회사의 모든 프로세스를 변경하는 것이 아닙니다(이것은 가까운 미래에 일어나지 않을 것입니다). 이는 프로세스 비용과 시간을 절감하고 동일하거나 더 나은 결과를 얻는 데 도움이 되는 다른 도구를 아는 것입니다.
클라우드 서비스를 사용할 때 비용을 포함한 특정 요소의 우선순위를 정합니다. 이 프로세스에 사용하는 서비스는 Python 3.10 런타임이 포함된 AWS Lambda와 원시 파일 및 쪽모이 세공 마루 변환 파일을 저장하는 S3입니다.
이 두 라이브러리 중 어느 라이브러리가 메모리 및 결과 파일의 무게와 같은 리소스를 더 잘 최적화할 수 있는지 확인하기 위해 CSV 파일을 원시 데이터로 가져와 pandas 및 polar로 처리하는 것이 목적입니다.
팬더
데이터 조작 및 분석에 특화된 Python 라이브러리로 C로 작성되었으며 2008년에 최초 출시되었습니다.
*극성 *
병렬 프로세스를 허용하는 데이터 조작 및 분석에 특화된 Python 및 Rust 라이브러리로 대부분 Rust로 작성되었으며 2022년에 출시되었습니다.
프로세스 아키텍처:
이 프로젝트는 아키텍처에 표시된 것처럼 다소 간단합니다. 사용자는 CSV 파일을 work/pandas 또는 work/porlas에 저장하고 자동으로 s3 트리거를 시작하여 파일을 처리하여 parquet로 변환하고 프로세스에 저장합니다.
이 작은 프로젝트에서는 다음 구성으로 두 개의 람다를 사용합니다.
메모리: 2GB
임시 메모리: 2GB
수명: 600초
요구사항
팬더가 있는 람다: Pandas, Numpy 및 Pyarrow
극성이 있는 람다: Polars
비교에 사용된 데이터세트는 Kaggle에서 "Rotten Tomatoes Movie Reviews – 144M 행"이라는 이름으로 제공되거나 여기에서 다운로드할 수 있습니다.
전체 저장소는 GitHub에서 사용할 수 있으며 여기에서 복제할 수 있습니다.
크기 또는 무게
Pandas가 사용하는 람다는 쪽모이 세공 파일을 생성하기 위해 두 개의 플러그인이 더 필요합니다. 이 경우에는 PyArrow와 제가 사용하고 있던 Pandas 버전에 대한 특정 버전의 numpy입니다. 그 결과, 우리는 74.4MB의 무게 또는 크기를 가진 람다를 얻었습니다. 이는 AWS가 람다의 무게에 대해 허용하는 한도에 매우 가까운 수치입니다.
Polars의 람다는 삶을 더 단순하게 만들고 람다 크기를 절반 미만으로 줄이는 PyArrow와 같은 다른 플러그인이 필요하지 않습니다. 결과적으로 람다의 무게 또는 크기는 첫 번째 것과 비교하여 30.6MB로 변환 프로세스에 필요할 수 있는 다른 종속성을 설치할 수 있는 공간을 제공합니다.
성능
Pandas의 람다는 첫 번째 버전 이후 압축을 사용하도록 최적화되었지만 동작도 분석되었습니다.
팬더
데이터 세트를 처리하는 데 18초가 걸렸고, 다른 버전에 비해 CSV 파일을 처리하고 Parquet 파일을 생성하는 데 1894MB의 메모리를 사용하여 가장 많은 시간과 리소스를 사용했습니다.
Pandas 압축
한 줄의 코드를 추가함으로써 이전 버전(Pandas)에 비해 약간의 개선이 가능했으며, 데이터 세트를 처리하는 데 17초가 걸렸고 1837MB를 사용했습니다. 이는 처리 및 계산 시간이 크게 향상되지는 않았지만 크기가 크게 향상되었음을 의미합니다. 결과 파일의
극성
동일한 데이터세트를 처리하는 데 12초가 걸렸으며 1462MB만 사용했습니다. 이전 두 개에 비해 시간이 44.44% 절약되고 메모리 소비도 줄어듭니다.
출력 파일 크기
팬더
압축 과정이 확립되지 않은 람다는 177.4MB의 파켓 파일을 생성했습니다.
Pandas 압축
람다에서 압축을 구성할 때 121.1MB의 쪽모이 세공 파일을 생성하지 않습니다. 작은 줄이나 옵션 하나가 파일 크기를 31.74% 줄이는 데 도움이 되었습니다. 큰 코드 변경이 아니라는 점을 고려하면 매우 좋은 선택입니다.
극성
Polars는 Pandas의 첫 번째 버전과 함께 구매한 105.8MB 파일을 생성했는데, 이는 압축을 사용한 Pandas 버전에 비해 40.36% 및 12.63%의 절약을 나타냅니다.
결론
이제 Polars를 사용하도록 Pandas를 사용하는 모든 내부 프로세스를 변경할 필요는 없습니다. 하지만 수천 또는 수백만 번의 람다 실행에 대해 이야기하고 있다면 Polars를 사용하면 배포뿐만 아니라 배포에도 도움이 될 것이라는 점을 고려하는 것이 중요합니다. 하지만 AWS가 Lambda와 같은 서버리스 서비스에 대해 부과하는 시간 기반 요금으로 인해 비용을 낮추는 데도 도움이 됩니다.
마찬가지로, 40.36%를 수백만 개의 파일로 변환할 때 GB 또는 TB에 대해 이야기하고 있으며 이는 Datalake 또는 Dataware 하우스 또는 심지어 콜드 파일 스토리지 내에서 상당한 영향을 미칠 수 있습니다.
Polars를 통한 절감은 이 두 가지 요소에만 국한되지 않습니다. 비용이 발생하는 서비스이기 때문에 AWS의 데이터 및/또는 객체 출력에 큰 영향을 미치기 때문입니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3