Синтаксис функции Pandas query() — это более чистый способ фильтрации или выбора данных в Pandas DataFrame.

Обзор

Как специалист по данным, я обычно полагался на использование логической маскировки для фильтрации или выбора данных в Pandas DataFrame. Я слышал о Pandas query()function раньше, но никогда не пробовал. Это изменилось несколько недель назад, когда я решил попробовать это по-настоящему 😎

Теперь эта функция стала для меня предпочтительным методом выбора или фильтрации данных. Это происходит по одной простой причине: улучшенная читаемость кода.

Функция запроса имеет очень простой синтаксис: она принимает логическое выражение в кавычках (например, «выражение») и фильтрует строки фрейма данных, где выражение имеет значение True.

В этой статье я быстро покажу вам, как использовать функцию df.query('expression') вместо стандартного логического метода синтаксиса маскирования. И, надеюсь, побудить некоторых из вас переключиться на предпочтительный метод! 😄

Примечание: пример кода для этой статьи можно найти в Jupyter Notebook здесь.

Сначала некоторые данные

Прежде чем мы начнем, нам нужны некоторые данные для работы. В демонстрационных целях в этой статье будет использоваться набор данных Iris.

В этом наборе данных используются четыре столбца измерений (длина чашелистика, ширина чашелистика, длина лепестка и ширина лепестка в сантиметрах) цветков растений ириса для прогнозирования видов цветков.

Теперь давайте приступим к сравнению синтаксиса! 🚀

Синтаксис: обычная логическая маска против функции запроса

Чтобы показать некоторое сравнение между двумя синтаксисами и показать, почему функция запроса лучше, давайте попробуем ответить на этот простой вопрос из набора данных Iris: Сколько образцов видов «setosa» имеют чашелистики длиной менее 5 см?

Используя обычный логический синтаксис маскирования, я могу быстро получить результат, используя следующее:

Тот же самый результат 20 может быть достигнут с помощью функции запроса следующим образом:

Вы заметили разницу между ними? На всякий случай приведу 2 основных замечания:

  1. Вместо того, чтобы писать iris_df.species несколько раз в фильтре, все, что мне нужно было сделать, это написать имя столбца species в выражении функции запроса.
  2. Посмотрите, насколько чист и удобочитаем подход к запросу.

Мне кажется или так удобнее для глаз?

Кроме того, я мог бы легко использовать переменную, используя символ «@» в функции запроса, чтобы получить тот же результат следующим образом:

Я надеюсь, что этот простой пример вопроса заинтриговал вас, чтобы попробовать функцию запроса в Pandas. Возможность безгранична!

Я не собираюсь продолжать приводить здесь больше примеров. Я предлагаю пойти туда и попробовать! Лучший способ чему-то научиться — пойти и что-нибудь сломать. 😄

Пока выражение в функции запроса имеет допустимые поля данных, переменные, логические символы и логические операторы Python, все должно быть в порядке. 👍

Если вам все же нужны еще примеры использования функции запроса, рекомендую ознакомиться с этой статьей здесь.

Последние мысли

Нередко можно найти код, который работает, но на первый взгляд трудно понять, что происходит. Обычно это называют проблемой читабельности кода. Сравнивая синтаксис между двумя обсуждаемыми здесь подходами, становится ясно, что метод функции запроса Pandas приводит к более читаемому коду. Кроме того, он также имеет некоторые преимущества в производительности.

Я надеюсь, что эта статья заинтриговала вас достаточно, чтобы попробовать функцию запроса. 😄

Спасибо, что нашли время прочитать эту статью. Надеюсь, вы нашли это полезным. Смело обращайтесь и подключайтесь! 👋

🚀🚀 Если вы хотите поддержать меня и прочитать больше таких статей от меня и других замечательных авторов среды, рассмотрите возможность регистрации на среду, используя мою реферальную ссылку. 🙏

Вот некоторые из моих других статей, которые могут вас заинтересовать: