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