«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как эффективно фильтровать объекты данных Pandas с помощью логического индексирования?

Как эффективно фильтровать объекты данных Pandas с помощью логического индексирования?

Опубликовано 1 ноября 2024 г.
Просматривать:386

How to Efficiently Filter Pandas Data Objects Using Boolean Indexing?

Эффективная фильтрация кадров и рядов данных Pandas с использованием логического индексирования

В сценариях анализа данных часто имеет решающее значение применение нескольких фильтров для сужения результатов. Целью этой статьи является рассмотрение эффективного подхода к объединению нескольких операций сравнения над объектами данных Pandas.

Задача

Цель состоит в том, чтобы обработать словарь реляционных операторов и применить их аддитивно к заданному Pandas. Series или DataFrame, в результате чего получается отфильтрованный набор данных. Эта операция требует минимизации ненужного копирования данных, особенно при работе с большими наборами данных.

Решение: логическое индексирование

Pandas предоставляет высокоэффективный механизм фильтрации данных с использованием логического индексирования. Логическое индексирование включает создание логических условий и последующую индексацию данных с использованием этих условий. Рассмотрим следующий пример:

df.loc[df['col1'] >= 1, 'col1']

Эта строка кода выбирает все строки в DataFrame df, где значение в столбце «col1» больше или равно 1. Результатом является новый объект Series, содержащий отфильтрованные значения.

Чтобы применить несколько фильтров, мы можем комбинировать логические условия, используя логические операторы, такие как & (и) и | (или). Например:

df[(df['col1'] >= 1) & (df['col1'] <= 1)]

Эта операция фильтрует строки, в которых 'col1' больше или равно 1 и меньше или равно 1.

Вспомогательные функции

To Упростив процесс применения нескольких фильтров, мы можем создать вспомогательные функции:

def b(x, col, op, n): 
    return op(x[col], n)

def f(x, *b):
    return x[(np.logical_and(*b))]

Функция b создает логическое условие для данного столбца и оператора, а f применяет несколько логических условий к DataFrame или Series.

Пример использования

Чтобы использовать эти функции, мы можем предоставить словарь критериев фильтра:

filters = {'>=': [1], '
b1 = b(df, 'col1', ge, 1)
b2 = b(df, 'col1', le, 1)
filtered_df = f(df, b1, b2)

Этот код применяет фильтры к столбцу «col1» в DataFrame df и возвращает новый DataFrame с отфильтрованными результатами.

Расширенная функциональность

В Pandas 0.13 появился метод запроса, который предлагает удобный способ применения фильтров с использованием строковых выражений. Для допустимых идентификаторов столбцов становится возможным следующий код:

df.query('col1 

Эта строка обеспечивает ту же фильтрацию, что и наша предыдущий пример с более кратким синтаксисом.

Используя логическое индексирование и вспомогательные функции, мы можем эффективно применять несколько фильтров к кадрам данных Pandas. и сериал. Такой подход сводит к минимуму копирование данных и повышает производительность, особенно при работе с большими наборами данных.

Заявление о выпуске Эта статья перепечатана по адресу: 1729395079. В случае каких-либо нарушений, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3