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

요약 표


1. 지연 실행 vs 즉시 실행

pandas (즉시 실행)

연산이 바로 실행됩니다:

DataStore (지연 실행)

연산은 결과가 필요할 때까지 지연됩니다:

왜 중요한가

지연 실행은 다음과 같은 이점을 제공합니다:
  • 쿼리 최적화: 여러 작업이 하나의 SQL 쿼리로 컴파일됩니다
  • 컬럼 프루닝(Column pruning): 필요한 컬럼만 읽습니다
  • 필터 푸시다운(Filter pushdown): 필터를 소스에 적용합니다
  • 메모리 효율성: 필요하지 않은 데이터는 로드하지 않습니다

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는 다음을 지원하기 위해 불변 연산을 사용합니다:
  • 쿼리 작성(lazy evaluation)
  • 스레드 안전성
  • 디버깅 용이성
  • 더 깔끔한 코드

6. 인덱스 지원

pandas

모든 인덱스를 지원합니다:

DataStore

간편한 인덱스 지원:

DataStore에서는 소스가 중요합니다

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

7. 비교 방식

pandas와의 비교

pandas는 DataStore 객체를 인식하지 않습니다:

equals() 사용하기


8. 타입 추론

pandas

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

DataStore

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

명시적 형 변환


9. 메모리 모델

pandas

모든 데이터가 메모리에 상주합니다:

DataStore

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

10. 오류 메시지

다양한 오류 발생 원인

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

디버깅 팁


마이그레이션 체크리스트

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

빠른 참고

마지막 수정일 2026년 7월 2일