办公文档
用 chdb DataStore 加速 pandas…
当你有 pandas DataFrame、parquet、csv、Arrow、json 等表格数据,想过滤、分组、聚合、连接或加速慢 pandas 时,用 chdb DataStore 以相同 pandas API 获得 ClickHouse 引擎性能。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
用 chdb DataStore 加速 特定
解决思路
- 安装依赖:pip install chdb(需要 Python 3.9+,macOS 或 Linux)。
- 将代码中的 import pandas as pd 替换为 import chdb.datastore as pd,其余 pandas 代码保持不变;DataStore 是惰性的、由 ClickHouse 支撑的 pandas 替代品,操作会编译为优化 SQL,仅在需要结果时(如 print()、len()、迭代)执行。
- 按场景选择入口:用 DataStore.from_file() / from_mysql() / from_s3() 等从文件或数据库读取;用 .join() 连接不同来源;用 import chdb.datastore as pd 替换慢 pandas;需要原始 SQL 时改用 chdb-sql 技能。
- 连接数据源统一用 DataStore:本地文件用 DataStore.from_file("sales.parquet")(自动识别 .parquet、.csv、.json、.arrow、.orc、.avro、.tsv、.xml);数据库用 DataStore.from_mysql(host="db:3306", database="shop", table="orders", user="root", password="pass");云存储用 DataStore.from_s3("s3://bucket/data.parquet", nosign=True);URI 简写用 DataStore.uri("mysql://root:pass@db:3306/shop/orders") 自动识别来源类型。
- 连接后使用完整 pandas API:过滤 ds[ds["age"] > 25];选列 ds[["name", "city"]];排序 ds.sort_values("revenue", ascending=False);分组 ds.groupby("dept")["salary"].mean();计算列 ds.assign(margin=lambda x: x["profit"] / x["revenue"]);字符串访问器 ds["name"].str.upper();日期访问器 ds["date"].dt.year;连接 ds1.join(ds2, on="id");预览 ds.head(10);查看生成的 SQL print(ds.to_sql())。支持 209 个 DataFrame 方法。
- 跨源连接:分别从 MySQL 和 parquet 创建 DataStore,然后 orders.join(customers, left_on="customer_id", right_on="id").groupby("country").agg({"amount": "sum", "rating": "mean"}).sort_values("sum", ascending=False)。
- 写入数据:创建目标 DataStore("file", path="summary.parquet", format="Parquet"),然后 target.insert_into("category", "total", "count").select_from(source.groupby("category").select("category", "sum(amount) AS total", "count() AS count")).execute()。
- 排错:ImportError: No module named 'chdb' 时执行 pip install chdb;ImportError: cannot import 'DataStore' 时用 from datastore import DataStore 或 from chdb.datastore import DataStore;数据库连接超时需在 host 中包含端口,如 host="db:3306" 而非 host="db";join 返回空结果时检查键类型是否匹配(都为 int 或都为 string),用 .to_sql() 检查;结果异常时调用 ds.to_sql() 查看生成的 SQL 调试;环境检查运行 python scripts/verify_install.py(在技能目录下)。
适用边界 · 注意事项
- 需要原始 SQL 语法时,改用 chdb-sql 技能。
- 涉及 ClickHouse 服务器管理时。
- 非 Python 的 DataStore API 工作时。