파이썬 데이터 과학, 숨겨진 보석 같은 도구들을 찾아서
파이썬은 데이터 과학 분야에서 강력한 도구 생태계를 자랑합니다. 판다스, 사이킷런, 텐서플로우 등 널리 알려진 라이브러리 외에도, 효율성을 높이고 작업 흐름을 개선할 수 있는 숨겨진 보석 같은 도구들이 존재합니다. 이 글에서는 주목받는 폴라스(Polars)부터 커넥터X(ConnectorX)와 같은 숨겨진 보석까지, 파이썬 데이터 과학 프로젝트에 유용한 도구들을 소개합니다.
데이터베이스 연결 속도 향상: 커넥터X
대부분의 데이터는 데이터베이스에 저장되지만, 실제 분석은 데이터베이스 외부에서 이루어집니다. 데이터 전송 과정에서 속도 저하가 발생하는데, 커넥터X는 이 문제를 해결하기 위해 탄생했습니다. 커넥터X는 파이썬의 다양한 데이터 처리 라이브러리와 데이터베이스를 빠르게 연결하여 데이터 로딩 속도를 최적화합니다. 몇 줄의 파이썬 코드와 SQL 쿼리만으로 데이터를 불러와 분석에 활용할 수 있어, 데이터 과학자의 시간을 단축해줍니다.
커넥터X는 러스트 기반 라이브러리를 사용하여 데이터 소스를 파티셔닝하고 병렬로 로드하는 등 다양한 최적화 기능을 제공합니다. 포스트그레SQL, 마이SQL, SQL라이트 등 다양한 데이터베이스를 지원하며, 판다스나 파이애로우 데이터프레임으로 변환하여 모딘, 대스크, 폴라스와 같은 도구에서 활용할 수 있습니다. ODBC 기반 데이터 소스에 대한 지원도 개발 중입니다.
OLAP을 위한 SQL라이트: 덕DB
SQL라이트는 파이썬에 기본으로 포함된 작고 강력한 관계형 데이터베이스입니다. 덕DB(DuckDB)는 "OLAP용 SQL라이트를 만든다면 어떨까?"라는 질문에 대한 해답과 같습니다. 컬럼형 데이터 저장 방식을 사용하며, 장시간 실행되는 분석 쿼리 작업에 최적화되어 있습니다. ACID 트랜잭션과 같은 기존 데이터베이스의 기능도 제공하며, 별도의 설치나 설정 없이 pip 명령어로 간단하게 설치할 수 있습니다.
덕DB는 CSV, JSON, 파케이 등 다양한 데이터 소스를 직접 읽어들일 수 있으며, 데이터베이스를 파티셔닝하여 효율적으로 관리할 수 있습니다. 다른 SQL 기반 관계형 데이터베이스와 유사한 쿼리 수행 방식을 가지면서도, 데이터 샘플 추출, 윈도우 함수 등 고급 분석 기능을 기본적으로 지원합니다. 또한 전문 검색, 벡터 유사도 검색, 엑셀 파일 가져오기/내보내기 등 다양한 확장 기능을 제공합니다.
데이터 정제와 준비를 한번에: 옵티머스
데이터 과학 프로젝트에서 가장 번거로운 작업 중 하나는 데이터 정제와 준비 과정입니다. 옵티머스(Optimus)는 데이터 로딩, 탐색, 정제, 내보내기 등 데이터 준비의 모든 과정을 지원하는 올인원 툴셋입니다. 판다스, 대스크, CUDF, 스파크 등 다양한 데이터 엔진을 사용하며, 애로우, 파케이, 엑셀, 데이터베이스, CSV, JSON 등 다양한 형식의 데이터를 처리할 수 있습니다.
옵티머스의 데이터 조작 API는 판다스와 유사하며, .rows()와 .cols() 접근자를 통해 데이터프레임을 쉽게 조작할 수 있습니다. 이메일 주소, URL과 같은 일반적인 데이터 유형을 처리할 수 있는 프로세서도 제공합니다. 옵티머스는 여전히 활발히 개발 중이지만, 2020년에 마지막 공식 릴리스가 이루어졌다는 점은 고려해야 할 부분입니다.
판다스의 대안: 폴라스
판다스의 성능 한계에 답답함을 느낀다면 폴라스(Polars)를 고려해볼 만합니다. 폴라스는 파이썬을 위한 데이터프레임 라이브러리로, 판다스와 유사한 문법을 제공하지만 러스트로 작성되어 하드웨어 성능을 최대한 활용하도록 설계되었습니다. 병렬 처리, SIMD 등의 성능 향상 기능이 자동으로 적용되며, CSV 파일 읽기와 같은 간단한 작업도 판다스보다 빠르게 처리됩니다.
폴라스는 즉시 실행 모드와 지연 실행 모드를 모두 지원하며, 스트리밍 API를 제공하여 쿼리를 점진적으로 처리할 수 있습니다. 그래프비즈 라이브러리를 활용하면 쿼리 실행 과정을 시각화하여 메모리나 CPU 사용량을 직관적으로 파악할 수 있습니다. 러스트 개발자는 pyo3를 이용하여 폴라스 확장 기능을 직접 개발할 수도 있습니다.
데이터 버전 관리의 새로운 지평: DVC
데이터 과학 실험에서 데이터 버전 관리는 중요한 과제입니다. DVC(Data Version Control)는 데이터셋에 버전 정보를 부여하고 깃 저장소에 코드와 함께 관리할 수 있도록 지원합니다. 코드와 데이터의 버전을 일관되게 맞추고 실험 결과의 재현성을 확보할 수 있습니다. DVC는 로컬 스토리지, 아마존 S3 등 다양한 저장소에 있는 데이터셋을 추적할 수 있습니다.
DVC는 데이터 모델 관리 및 활용 방식을 '파이프라인' 형태로 정의할 수 있도록 지원합니다. 데이터 캐시 기능, 실험 추적 체계, 머신러닝 모델 관리 레지스트리 등 다양한 기능을 제공합니다. 비주얼 스튜디오 코드 사용자는 DVC VS Code 확장 프로그램을 통해 DVC 워크플로우를 에디터 환경에 통합할 수 있습니다.
라벨 오류, 이제 안녕: 클린랩
고품질 머신러닝 데이터셋을 확보하는 것은 어려운 일입니다. 클린랩(Cleanlab)은 라벨이 누락되거나 오류가 있는 데이터셋을 분석하고 정제하기 위해 만들어졌습니다. 기존의 고품질 데이터셋을 활용하여 품질이 낮은 데이터셋을 분석하고, 개선이 필요한 부분을 찾아내 자동으로 정제된 데이터셋으로 다시 학습을 수행합니다.
클린랩은 특정 데이터 모델이나 프레임워크에 종속되지 않으며, 파이토치, 사이킷런, 텐서플로우 등 어떤 머신러닝 프레임워크와도 함께 작동할 수 있습니다. 토큰 분류, 다중 라벨링, 회귀, 이미지 분할 등 다양한 머신러닝 작업을 위한 전용 워크플로우를 제공합니다.
데이터 과학 워크플로우 자동화: 스네이크메이크
데이터 과학 워크플로우를 구축하는 것은 복잡하고 어려울 수 있습니다. 스네이크메이크(Snakemake)는 데이터 분석 워크플로우를 자동화하고, 모든 사용자가 동일한 결과를 얻을 수 있도록 보장하는 도구입니다. 워크플로우에 포함된 작업 단계가 많고 복잡할수록 스네이크메이크를 통해 자동화된 실행 체계를 구축했을 때 얻는 이점은 더욱 커집니다.
스네이크메이크의 워크플로우는 GNU 메이크와 유사한 구조를 가지며, 규칙을 정의하여 워크플로우의 각 단계를 설정합니다. 워크플로우 규칙은 멀티스레드 방식으로 실행될 수 있으며, JSON 또는 YAML 파일로부터 구성 데이터를 불러와 사용할 수도 있습니다. 쿠버네티스, 구글 클라우드 라이프 사이언스, AWS 티반나 등 다양한 환경에 배포할 수 있습니다.
결론
파이썬 데이터 과학 생태계에는 아직 널리 알려지지 않았지만 강력한 기능과 효율성을 제공하는 다양한 도구들이 존재합니다. 커넥터X, 덕DB, 옵티머스, 폴라스, DVC, 클린랩, 스네이크메이크 등 이 글에서 소개된 도구들을 활용하여 데이터 과학 프로젝트의 생산성을 높이고 더 나은 결과를 얻을 수 있기를 바랍니다. 끊임없이 변화하는 데이터 과학 분야에서 새로운 도구를 탐색하고 활용하는 것은 경쟁력을 확보하는 데 필수적인 요소입니다.