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

Pandas DataFramesをchDBでクエリする方法

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

セットアップ

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

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

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

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

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

URLからPandas DataFrameを作成

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

次に、試合のJSONファイルの1つをDataFrameにロードします:

どのデータを扱うかを確認しましょう:

次に、イベントのJSONファイルの1つをロードし、そのDataFrameにmatch_idというカラムを追加します:

再度、最初の行を確認しましょう:

Pandas DataFramesのクエリ

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

Pandas DataFramesは、Pythonテーブル関数を使用することでクエリできます:

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

次に、2試合以上の試合を担当した審判を見つけるクエリを書くことができます:

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

Pandas DataFramesの結合

DataFramesをクエリの中で結合することもできます。
例えば、試合の概要を取得するために、次のクエリを書くことができるでしょう:

DataFrameからテーブルを生成

DataFramesからClickHouseテーブルを作成し、ポピュレートすることも可能です。
chDBにテーブルを作成するには、Stateful Session APIを使用する必要があります。

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

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

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

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

次に、最上位のパス受領者を返すクエリを実行できます:

Pandas DataFrameとテーブルの結合

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