Перейти к основному содержимому
Перейти к основному содержимому

Как выполнять запросы к Pandas DataFrames с chDB

Pandas — это популярная библиотека для манипуляции и анализа данных в Python. В версии 2 chDB мы улучшили производительность запросов к Pandas DataFrames и представили табличную функцию Python. В этом руководстве мы научимся выполнять запросы к Pandas с помощью табличной функции Python.

Настройка

Сначала создадим виртуальное окружение:

А теперь установим chDB. Убедитесь, что у вас версия 2.0.2 или выше:

Теперь установим Pandas и несколько других библиотек:

Мы будем использовать ipython для выполнения команд в остальной части руководства, который можно запустить, введя:

Вы также можете использовать код в Python-скрипте или в вашем любимом блокноте.

Создание Pandas DataFrame из URL

Мы будем запрашивать некоторые данные из репозитория StatsBomb на GitHub. Сначала импортируем requests и pandas:

Затем загрузим один из JSON-файлов матчей в DataFrame:

Давайте посмотрим, с какими данными мы будем работать:

Далее загрузим один из JSON-файлов событий и добавим столбец с именем match_id в этот DataFrame:

И снова посмотрим на первую строку:

Запросы к Pandas DataFrames

Теперь давайте посмотрим, как запрашивать эти DataFrames, используя chDB. Импортируем библиотеку:

Мы можем запрашивать Pandas DataFrames, используя табличную функцию Python:

Итак, если мы хотим перечислить колонки в matches_df, мы можем написать следующее:

Тогда мы могли бы узнать, какие судьи обслуживали более одного матча, написав следующий запрос:

Теперь давайте исследуем events_df.

Объединение Pandas DataFrames

Мы также можем объединить DataFrames в запросе. Например, чтобы получить обзор матча, мы можем написать следующий запрос:

Заполнение таблицы из DataFrame

Мы также можем создавать и заполнять таблицы ClickHouse из DataFrames. Если мы хотим создать таблицу в chDB, нам нужно использовать API для управления сессией.

Импортируем модуль сессии:

Инициализируем сессию:

Затем создадим базу данных:

Затем создадим таблицу events на основе events_df:

После этого мы можем выполнить запрос, который вернет главного получателя пасов:

Объединение Pandas DataFrame и таблицы

Наконец, мы также можем обновить наш запрос объединения, чтобы объединить DataFrame matches_df с таблицей statsbomb.events: