跳转到主要内容
本指南可帮助你将现有的 pandas 代码迁移到 DataStore,在保持兼容性的同时提升性能。

一行代码迁移

最简单的迁移方式是改一下 import:
就是这么简单!大多数 pandas 代码无需修改即可运行。

分步迁移

1

安装 chDB

2

修改导入语句

3

测试现有代码

运行现有代码。大多数操作都可以直接运行,无需修改:
4

处理差异项

少数操作的行为会有所不同。请参见下方的关键区别。

无需更改即可使用的内容

数据加载

筛选

所选内容

GroupBy 与聚合

排序

字符串操作

日期时间操作

I/O 操作


关键区别

1. 惰性求值

DataStore 的操作采用惰性求值——只有在需要结果时才会执行。 pandas:
DataStore:

2. 返回类型

3. 没有 inplace 参数

DataStore 不支持 inplace=True。请始终使用其返回值: pandas:
DataStore:

4. 比较 DataStore

pandas 无法识别 DataStore 对象,因此请使用 to_pandas() 来进行比较:

5. 行顺序

对于文件源 (例如 SQL 数据库) ,DataStore 可能无法保留行顺序。请使用显式排序:

迁移方案

模式 1:读取-分析-写入

模式 2:使用 pandas 操作的 DataFrame

如果你需要 pandas 特有的功能,请在最后再进行转换:

模式 3:混合工作流


性能对比

对于大型数据集,DataStore 的速度明显更快: 基于 1000 万行数据的基准测试

迁移故障排查

问题:操作无法使用

某些 pandas 操作可能不受支持。请检查:
  1. 该操作是否在兼容性列表中?
  2. 尝试先转换为 pandas:ds.to_df().operation()

问题:结果不一致

启用调试日志,以了解实际情况:

问题:性能较慢

检查你的执行模式:

问题:类型不匹配

DataStore 可能会推断出不同的类型:

逐步迁移策略

第 1 周:兼容性测试

第 2 周:迁移简单脚本

先从符合以下条件的脚本开始:
  • 读取大型文件
  • 执行筛选和聚合
  • 不使用自定义 apply 函数

第 3 周:处理复杂场景

对于包含自定义函数的脚本:

第 4 周:完全迁移

将所有脚本都改为导入 DataStore。

常见问题

我可以同时使用 pandas 和 DataStore 吗?

可以!你可以在两者之间自由转换:

我的测试还能通过吗?

大多数测试应该都能通过。对于比较类测试,请转换为 pandas:

我可以在 Jupyter 笔记本中使用 DataStore 吗?

可以!DataStore 可在 Jupyter 笔记本中使用:

如何报告问题?

如果你发现兼容性问题,请在以下地址反馈: https://github.com/chdb-io/chdb/issues