Метод Pandas query(): Запрос DataFrame в Python
Библиотека Python Pandas хорошо известна своей способностью эффективно хранить и извлекать данные. DataFrames Pandas также упрощает визуализацию данных и манипулирование ими. В этой статье мы рассмотрим одну из важнейших функций Pandas — query()
, которая позволяет нам фильтровать и отображать определенные записи из DataFrame в соответствии с нашими потребностями, аналогично использованию системы базы данных с языком запросов. Мы рассмотрим запрос к DataFrame с помощью query()
с некоторыми примерами.
Метод Pandas DataFrame query()
Проще говоря, функция query()
используется для запросов к DataFrame и получения соответствующих данных из DataFrame. Это помогает нам выбирать, фильтровать и делать с данными многое другое, передавая строку (запрос) в метод query()
. Прежде чем мы рассмотрим некоторые примеры, давайте разберемся с синтаксисом query()
.
Синтаксис:
DataFrame.query(expr, *, inplace=False, **kwargs)
expr:
принимает строку, содержащую запрос. Мы можем использовать переменные в наших запросах, добавляя к ним префикс символа@
. Важно отметить, что при использовании имен столбцов для запроса они не должны включать ключевые слова Python, такие как –list
иfor
и т. д.inplace:
логическое значение, которое используется для указания того, должны ли данные, возвращенные после запроса, быть преобразованы в новый отдельный DataFrame илиquery()
должен изменить существующий DataFrame.**kwargs:
аргументы ключевых слов, которые принимаютсяquery()
и могут использоваться сeval()
.
Теперь, когда мы поняли, что такое query()
, рассмотрим несколько примеров.
Примеры запроса DataFrame с использованием метода query()
В этом разделе мы в основном сосредоточимся на понимании query() с некоторыми примерами различных запросов, которые мы можем ввести. Мы начнем с импорта Pandas и создания DataFrame для запроса.
Пример DataFrame:
import pandas as pd
data = {'Id': [101,102,103,104],
'Name': ['Tony', 'Natasha', 'Steve', 'Bruce'],
'Marks': [89, 93, 72, 68],
'Grade': ['B','A','C','D']
}
df = pd.DataFrame(data)
print(df)
Чтобы создать наш DataFrame df
, мы сначала создали словарные данные, содержащие четыре поля или ключи, которые стали столбцами нашего DataFrame, и список значений, каждое длиной четыре, которые стали нашими строками в DataFrame. Мы преобразовали словарь в DataFrame с помощью метода DataFrame()
. Для лучшей визуализации выводим наш DataFrame.
Выход:
Теперь мы можем рассмотреть некоторые запросы.
Пример 1
Здесь мы рассмотрим запрос на выбор строк, содержащих знаков больше 70, из DataFrame.
result = df.query("Marks > 70")
print(result)
Выход:
Мы можем заметить, что строка, содержащая Marks=68
, была исключена из вывода.
Пример 1.1: Пустой DataFrame
Если переданный запрос не имеет соответствующих результатов в таблице, возвращается пустой DataFrame.
result = df.query("Marks < 60")
print(result)
Выход:
Поскольку все записи поля Marks
превышают 60, никакие результаты не соответствуют запросу.
Пример 2: Использование символа @
Символ @
используется в качестве префикса к именам переменных, что помогает нам напрямую использовать объявленные нами переменные при запросе DataFrame.
name = "Natasha"
result = df.query("Name == @name")
print(result)
Здесь мы напрямую использовали имя переменной в нашем запросе, добавив к нему префикс символа @
.
Выход:
Пример 3
Здесь мы рассмотрим более сложный запрос, чтобы глубже понять функцию query()
. Мы напишем запрос для выбора строк, содержащих имена, которые начинаются с N или заканчиваются на e.
result = df.query("Name.str.startswith('N') or Name.str.endswith('e')")
print(result)
Здесь мы использовали встроенные функции Python startwith()
и endswith()
, которые возвращают строки, которые начинаются и заканчиваются подстроками, переданными в эти функции, соответственно. Обратите внимание, что введенные подстроки чувствительны к регистру. Мы используем ключевое слово или в запросе для отображения данных, если любое из двух условий истинно.
Выход:
Здесь возвращается строка, содержащая имя Natasha, поскольку она начинается с подстроки N, а строки, содержащие имена Bruce и Steve, возвращаются, когда они заканчиваются подстрокой e.
Заключение
Запрос к DataFrame может быть эффективным способом фильтрации данных и изменения нашего DataFrame. В этой статье мы увидели, как можно выбирать разные строки на основе одного и нескольких условий, а также несколько вспомогательных примеров для лучшего понимания. Мы также увидели, как можно использовать переменные для запроса DataFrame. Эти простые методы могут оказаться полезными, когда дело доходит до визуализации данных и работы со сложными кадрами данных.