メインコンテンツまでスキップ
メインコンテンツまでスキップ

How to query Pandas DataFrames with chDB

Pandas は、Python におけるデータ操作と分析のための人気のあるライブラリです。
chDB のバージョン 2 では、Pandas DataFrame のクエリ性能を向上させ、Python テーブル関数を導入しました。
このガイドでは、Python テーブル関数を使用して Pandas にクエリを実行する方法を学びます。

セットアップ

まず、仮想環境を作成しましょう:

次に、chDB をインストールします。
バージョン 2.0.2 以上を持っていることを確認してください:

次に、Pandas といくつかの他のライブラリをインストールします:

これからのガイドのコマンドを実行するために ipython を使用します。以下のコマンドで起動できます:

Python スクリプトやあなたのお気に入りのノートブックでもコードを使用できます。

URL から Pandas DataFrame を作成する

StatsBomb GitHub リポジトリ からデータをクエリします。
まず、requests と pandas をインポートします:

次に、1 つの試合の JSON ファイルを DataFrame に読み込みます:

どのデータを扱うのか見てみましょう:

次に、1 つのイベントの JSON ファイルを読み込み、その DataFrame に match_id という列を追加します:

再度、最初の行を見てみましょう:

Pandas DataFrame をクエリする

次に、chDB を使ってこれらの DataFrame にクエリを実行する方法を見てみましょう。
ライブラリをインポートします:

Pandas DataFrame を Python テーブル関数を使用してクエリすることができます:

したがって、matches_df のカラムをリストアップしたい場合、次のように書くことができます:

次に、過去に 1 回以上の試合を裁いた審判を見つけるために、以下のクエリを書くことができます:

次に、events_df を見てみましょう。

Pandas DataFrame を結合する

クエリ内で DataFrame を結合することもできます。
たとえば、試合の概要を得るために、以下のクエリを書くことができます:

DataFrame からテーブルを作成する

DataFrame から ClickHouse テーブルを作成して populate することも可能です。
chDB にテーブルを作成するには Stateful Session API を使用する必要があります。

セッションモジュールをインポートしましょう:

セッションを初期化します:

次に、データベースを作成します:

次に、events_df に基づいて events テーブルを作成します:

その後、最も多くのパスを受け取った選手を返すクエリを実行します:

Pandas DataFrame とテーブルを結合する

最後に、結合クエリを更新して matches_df DataFrame を statsbomb.events テーブルと結合することもできます: