В сценариях анализа данных часто имеет решающее значение применение нескольких фильтров для сужения результатов. Целью этой статьи является рассмотрение эффективного подхода к объединению нескольких операций сравнения над объектами данных 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. и сериал. Такой подход сводит к минимуму копирование данных и повышает производительность, особенно при работе с большими наборами данных.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3