サマリー表
1. 遅延実行と即時実行
pandas (即時実行)
DataStore (遅延実行)
これが重要な理由
- クエリ最適化: 複数の操作が1つの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()を実行した後 - performance mode (
config.use_performance_mode()) では、どの操作でも行の順序は保証されません。詳しくは 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 に起因
デバッグのヒント
移行チェックリスト
- インポート文を変更する
-
inplace=Trueパラメータを削除する - pandas DataFrame が必要な箇所では、明示的に
to_df()を追加する - 行の順序が重要な場合はソートを追加する
- 比較テストには
to_pandas()を使用する - 実際のデータ量を想定したサイズでテストする