Как запрашивать 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
: