Skip to main content
DataStore は pandas と高い互換性がありますが、押さえておくべき重要な違いもあります。

サマリー表


1. 遅延実行と即時実行

pandas (即時実行)

操作はすぐに実行されます。

DataStore (遅延実行)

結果が必要になるまで、処理は実行されません:

これが重要な理由

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

クイックリファレンス

最終更新日 2026年7月3日