如何使用 chDB 查询 Pandas DataFrames
Pandas 是一个流行的 Python 数据处理和分析库。
在 chDB 的 2 版本中,我们提高了查询 Pandas DataFrames 的性能,并引入了 Python
表函数。
在本指南中,我们将学习如何使用 Python
表函数查询 Pandas。
设置
让我们首先创建一个虚拟环境:
现在我们将安装 chDB。 确保您使用的是 2.0.2 或更高版本:
接下来,我们将安装 Pandas 和其他几个库:
我们将使用 ipython
在本指南的其余部分运行命令,您可以通过运行以下命令启动:
您也可以在 Python 脚本或您喜欢的笔记本中使用该代码。
从 URL 创建 Pandas DataFrame
我们将从 StatsBomb GitHub 仓库 查询一些数据。 首先,让我们导入 requests 和 pandas:
然后,我们将加载一个比赛的 JSON 文件到 DataFrame 中:
让我们看看我们将处理的数据:
接下来,我们将加载一个事件的 JSON 文件,并向该 DataFrame 添加一个名为 match_id
的列:
然后,让我们看看第一行的数据:
查询 Pandas DataFrames
接下来,让我们看看如何使用 chDB 查询这些 DataFrames。 我们将导入库:
我们可以通过使用 Python
表函数查询 Pandas DataFrames:
因此,如果我们想列出 matches_df
中的列,可以写如下:
然后,我们可以通过编写以下查询找出裁判执法超过一场比赛的情况:
现在,让我们探索 events_df
。
联接 Pandas DataFrames
我们还可以在查询中将 DataFrames 连接在一起。 例如,为了获取比赛的概况,我们可以写出以下查询:
从 DataFrame 填充表
我们还可以从 DataFrames 创建并填充 ClickHouse 表。 如果我们想在 chDB 中创建一个表,需要使用有状态会话 API。
让我们导入会话模块:
初始化一个会话:
接下来,我们将创建一个数据库:
然后,基于 events_df
创建一个 events
表:
然后我们可以运行查询,返回最顶端的传球接受者:
联接 Pandas DataFrame 和表
最后,我们还可以更新我们的联接查询,将 matches_df
DataFrame 与 statsbomb.events
表联接: