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

Как запрашивать DataFrame в Pandas с chDB

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

Настройка

Давайте сначала создадим виртуальную среду:

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

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

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

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

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

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

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

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

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

И снова давайте взглянем на первую строку:

Запросы к DataFrame в Pandas

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

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

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

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

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

Объединение DataFrame в Pandas

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

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

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

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

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

Далее создадим базу данных:

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

Затем мы можем выполнить запрос, который возвращает лучших принимающих пас:

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

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