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