요약 표
1. 지연 실행 vs 즉시 실행
pandas (즉시 실행)
DataStore (지연 실행)
왜 중요한가
- 쿼리 최적화: 여러 작업이 하나의 SQL 쿼리로 컴파일됩니다
- 컬럼 프루닝(Column pruning): 필요한 컬럼만 읽습니다
- 필터 푸시다운(Filter pushdown): 필터를 소스에 적용합니다
- 메모리 효율성: 필요하지 않은 데이터는 로드하지 않습니다
2. 반환 타입
pandas
DataStore
pandas 타입으로 변환하기
3. 실행 트리거
지연 실행로 유지되는 작업
4. 행 순서
pandas
DataStore
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를 지원하지 않나요?
- 쿼리 작성(lazy evaluation)
- 스레드 안전성
- 디버깅 용이성
- 더 깔끔한 코드
6. 인덱스 지원
pandas
DataStore
DataStore에서는 소스가 중요합니다
- DataFrame 소스: pandas 인덱스가 유지됩니다
- File 소스: 단순한 정수 인덱스를 사용합니다
7. 비교 방식
pandas와의 비교
equals() 사용하기
8. 타입 추론
pandas
DataStore
명시적 형 변환
9. 메모리 모델
pandas
DataStore
10. 오류 메시지
다양한 오류 발생 원인
- pandas 오류: pandas 라이브러리에서 발생
- DataStore 오류: chDB 또는 ClickHouse에서 발생
디버깅 팁
마이그레이션 체크리스트
- import 문 변경
-
inplace=True매개변수 제거 - pandas DataFrame이 필요한 경우
to_df()를 명시적으로 추가 - 행 순서가 중요하면 정렬 추가
- 비교 테스트에는
to_pandas()사용 - 실제와 유사한 데이터 크기로 테스트