narwhals-dev/narwhals

Lightweight and extensible compatibility layer between dataframe libraries!

해결하는 문제

Narwhals는 개발자가 데이터프레임에 종속되지 않은 코드를 작성할 수 있도록 해주는 가벼운 호환성 계층입니다. 데이터프레임을 사용하는 라이브러리(예: pandas, Polars, cuDF, PyArrow)마다 별도의 구현을 작성해야 하는 문제를 해결합니다.

작동 방식

Narwhals는 Polars API의 일부를 제공하는 통합 API를 통해 네이티브 데이터프레임 객체를 래핑합니다. 이 과정은 다음 세 단계로 구성됩니다:

  1. 래핑: narwhals.from_native를 사용하여 네이티브 데이터프레임 또는 LazyFrame를 Narwhals 클래스로 래핑합니다.
  2. 작업: 지원되는 Polars 스타일 API를 사용하여 데이터에 작업을 수행합니다.
  3. 반환: narwhals.to_native를 사용하여 원래 형식으로 객체를 반환합니다(예: 입력이 pandas DataFrame이면 출력도 pandas DataFrame).

계산은 입력 라이브러리에 네이티브로 유지되므로 추가 종속성은 필요 없으며 오버헤드는 무시할 수 있습니다.

대상 사용자

다양한 데이터프레임 백엔드를 지원하고 싶지만 종속성을 추가하거나 중복 코드를 작성하고 싶지 않은 데이터프레임을 소비하는 라이브러리를 유지보수하는 개발자.

주요 특징

  • 광범위한 호환성: cuDF, Modin, pandas, Polars, PyArrow(완전한 API) 및 Daft, Dask, DuckDB, Ibis, PySpark, SQLFrame(지연 전용)을 지원합니다.
  • 종속성 없음: 사용자가 전달한 것만 사용하므로 호스트 라이브러리는 가볍게 유지됩니다.
  • 네이티브 성능: 계산은 입력 라이브러리에 네이티브로 유지됩니다(예: cuDF의 경우 GPU 계산).
  • 완전한 정적 타이핑: 더 나은 IDE 지원을 위해 완전한 정적 타이핑을 제공합니다.
  • 안정된 API: 엄격한 호환성 정책을 유지합니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트