DevGang
Авторизоваться

Метод 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. Эти простые методы могут оказаться полезными, когда дело доходит до визуализации данных и работы со сложными кадрами данных.

Источники:

#Python #Pandas
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

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

В этом месте могла бы быть ваша реклама

Разместить рекламу