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