메인 콘텐츠로 건너뛰기
DataStore는 pandas와 매우 높은 호환성을 제공하지만, 알아두어야 할 중요한 차이점이 있습니다.

요약 표


1. 지연 실행과 즉시 실행

pandas (즉시 실행)

연산이 즉시 실행됩니다:

DataStore (지연 실행)

결과가 필요할 때까지 연산은 실행되지 않습니다:

중요한 이유

지연 실행은 다음을 가능하게 합니다:
  • 쿼리 최적화: 여러 작업을 하나의 SQL 쿼리로 컴파일합니다
  • 컬럼 프루닝: 필요한 컬럼만 읽습니다
  • 필터 푸시다운: 필터를 원본 데이터 소스에서 적용합니다
  • 메모리 효율성: 필요하지 않은 데이터는 로드하지 않습니다

2. 반환 타입

pandas

DataStore

pandas 타입으로 변환하기


3. 실행 트리거

실제 값이 필요한 경우 DataStore가 실행됩니다:

지연 실행으로 유지되는 연산


4. 행 순서

pandas

행의 순서는 항상 유지됩니다:

DataStore

대부분의 연산에서 행 순서는 자동으로 유지됩니다:
DataStore는 pandas와의 순서 일관성을 보장하기 위해 내부적으로 원래 행 위치를 자동으로 추적합니다(rowNumberInAllBlocks()를 사용).

순서가 유지되는 경우

  • 파일 소스(CSV, Parquet, JSON 등)
  • pandas DataFrame 소스
  • 필터링 작업
  • 컬럼 선택
  • sort() 또는 sort_values()를 명시적으로 적용한 후
  • 순서를 결정하는 작업(nlargest(), nsmallest(), head(), tail())

순서가 달라질 수 있는 경우

  • groupby() 집계 후(일관된 순서를 보장하려면 sort_values()를 사용)
  • 특정 JOIN 유형의 merge() / join() 후
  • 성능 모드(config.use_performance_mode())에서는 어떤 작업에서도 행 순서가 보장되지 않습니다. 성능 모드를 참조하십시오.

5. inplace 매개변수 없음

pandas

DataStore

inplace=True는 지원되지 않습니다. 항상 결과를 변수에 할당하십시오:

왜 inplace가 없나요?

DataStore는 다음을 가능하게 하기 위해 불변 연산을 사용합니다.
  • 쿼리 구성(지연 실행)
  • 스레드 안전성
  • 디버깅 용이성
  • 더 깔끔한 코드

6. 인덱스 지원

pandas

전체 인덱스 지원:

DataStore

간편한 인덱스 지원:

DataStore 소스에 따라 달라집니다

  • DataFrame 소스: pandas 인덱스를 유지합니다
  • File 소스: 단순한 정수 인덱스를 사용합니다

7. 비교 동작 방식

pandas와 비교

pandas는 DataStore 객체를 인식하지 못합니다:

equals() 사용하기


8. 타입 추론

pandas

numpy/pandas의 타입을 사용합니다:

DataStore

ClickHouse 타입을 사용할 수 있습니다:

명시적 형변환


9. 메모리 모델

pandas

모든 데이터는 메모리에 저장됩니다:

DataStore

데이터는 필요해질 때까지 원본 소스에 그대로 유지됩니다:

10. 오류 메시지

서로 다른 오류 발생 원인

  • pandas errors: pandas 라이브러리에서 발생
  • DataStore errors: chDB 또는 ClickHouse에서 발생

디버깅 팁


마이그레이션 체크리스트

pandas에서 마이그레이션할 때:
  • import 문 변경
  • inplace=True 매개변수 제거
  • pandas DataFrame이 필요한 경우 to_df()를 명시적으로 추가
  • 행 순서가 중요하다면 정렬 추가
  • 비교 테스트에는 to_pandas() 사용
  • 대표적인 데이터 크기로 테스트

빠른 참고