Pandas — это мощная библиотека Python для обработки и анализа данных. Фильтрация строк DataFrame по значениям столбцов является фундаментальной задачей в обработке данных. В этой статье рассматриваются различные методы эффективной фильтрации Pandas DataFrame, охватывающие простые и сложные сценарии.
Оглавление
- Базовая фильтрация: один столбец, одно условие
- Отрицание: выбор строк, не соответствующих условию
- Численные сравнения: больше чем, меньше чем и т.д.
- Комбинирование условий: операции AND и OR
- Расширенная фильтрация: несколько столбцов и сложная логика
- Эффективная фильтрация с помощью
isin()
Базовая фильтрация: один столбец, одно условие
Простейшая форма фильтрации включает в себя выбор строк, где определенный столбец соответствует конкретному значению. Это достигается с помощью булевого индексирования.
import pandas as pd
# Пример DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Age': [25, 30, 22, 28],
'City': ['New York', 'London', 'Paris', 'Tokyo']}
df = pd.DataFrame(data)
# Выбор строк, где City равно 'London'
london_residents = df[df['City'] == 'London']
print(london_residents)
Этот код создает булеву маску (df['City'] == 'London'
), которая равна True
там, где столбец ‘City’ равен ‘London’, и False
в противном случае. Эта маска затем используется для индексирования DataFrame, выбирая только строки, где маска равна True
.
Отрицание: выбор строк, не соответствующих условию
Чтобы выбрать строки, где столбец не содержит определенного значения, используйте оператор отрицания !=
.
# Выбор строк, где City НЕ равно 'London'
not_london_residents = df[df['City'] != 'London']
print(not_london_residents)
Численные сравнения: больше чем, меньше чем и т.д.
Для числовых столбцов используйте операторы сравнения (>
, <
, >=
, <=
) для фильтрации по диапазонам значений.
# Выбор строк, где Age больше 25
older_than_25 = df[df['Age'] > 25]
print(older_than_25)
# Выбор строк, где Age меньше или равно 25
younger_than_or_equal_to_25 = df[df['Age'] <= 25]
print(younger_than_or_equal_to_25)
Комбинирование условий: операции AND и OR
Фильтрация по нескольким значениям столбцов путем комбинирования булевых условий с логическими операторами &
(AND) и |
(OR). Заключите каждое условие в скобки.
# Выбор строк, где City равно 'London' И Age больше 25
london_and_older = df[(df['City'] == 'London') & (df['Age'] > 25)]
print(london_and_older)
# Выбор строк, где City равно 'London' ИЛИ Age больше 25
london_or_older = df[(df['City'] == 'London') | (df['Age'] > 25)]
print(london_or_older)
Расширенная фильтрация: несколько столбцов и сложная логика
В сложных сценариях метод query()
обеспечивает лучшую читаемость.
# Использование query() для лучшей читаемости
complex_filter = df.query('(City == "London" and Age > 25) or (Age < 23)')
print(complex_filter)
Эффективная фильтрация с помощью isin()
Метод isin()
предоставляет лаконичный способ проверки, содержатся ли значения в списке.
cities_to_include = ['London', 'Paris']
filtered_df = df[df['City'].isin(cities_to_include)]
print(filtered_df)
В этой статье были продемонстрированы различные методы фильтрации DataFrame в Pandas. Выбор правильного метода зависит от сложности критериев фильтрации. Не забывайте правильно использовать скобки с логическими операторами для обеспечения точных результатов.