跳到主要内容
跳到主要内容

如何使用 chDB 查询 Pandas DataFrame

Pandas 是一个流行的 Python 数据处理和分析库。 在 chDB 的第 2 个版本中,我们提升了查询 Pandas DataFrame 的性能,并引入了 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 表连接: