narwhals-dev/narwhals
Lightweight and extensible compatibility layer between dataframe libraries!
해결하는 문제
Narwhals는 개발자가 데이터프레임에 종속되지 않은 코드를 작성할 수 있도록 해주는 가벼운 호환성 계층입니다. 데이터프레임을 사용하는 라이브러리(예: pandas, Polars, cuDF, PyArrow)마다 별도의 구현을 작성해야 하는 문제를 해결합니다.
작동 방식
Narwhals는 Polars API의 일부를 제공하는 통합 API를 통해 네이티브 데이터프레임 객체를 래핑합니다. 이 과정은 다음 세 단계로 구성됩니다:
- 래핑:
narwhals.from_native를 사용하여 네이티브 데이터프레임 또는 LazyFrame를 Narwhals 클래스로 래핑합니다. - 작업: 지원되는 Polars 스타일 API를 사용하여 데이터에 작업을 수행합니다.
- 반환:
narwhals.to_native를 사용하여 원래 형식으로 객체를 반환합니다(예: 입력이 pandas DataFrame이면 출력도 pandas DataFrame).
계산은 입력 라이브러리에 네이티브로 유지되므로 추가 종속성은 필요 없으며 오버헤드는 무시할 수 있습니다.
대상 사용자
다양한 데이터프레임 백엔드를 지원하고 싶지만 종속성을 추가하거나 중복 코드를 작성하고 싶지 않은 데이터프레임을 소비하는 라이브러리를 유지보수하는 개발자.
주요 특징
- 광범위한 호환성: cuDF, Modin, pandas, Polars, PyArrow(완전한 API) 및 Daft, Dask, DuckDB, Ibis, PySpark, SQLFrame(지연 전용)을 지원합니다.
- 종속성 없음: 사용자가 전달한 것만 사용하므로 호스트 라이브러리는 가볍게 유지됩니다.
- 네이티브 성능: 계산은 입력 라이브러리에 네이티브로 유지됩니다(예: cuDF의 경우 GPU 계산).
- 완전한 정적 타이핑: 더 나은 IDE 지원을 위해 완전한 정적 타이핑을 제공합니다.
- 안정된 API: 엄격한 호환성 정책을 유지합니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트