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

Как выполнять запросы к 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: