Data Analysis

Мастерство фильтрации DataFrame в Pandas: Полное руководство

Spread the love

Pandas — это мощная библиотека Python для обработки и анализа данных. Фильтрация строк DataFrame по значениям столбцов является фундаментальной задачей в обработке данных. В этой статье рассматриваются различные методы эффективной фильтрации Pandas DataFrame, охватывающие простые и сложные сценарии.

Оглавление

Базовая фильтрация: один столбец, одно условие

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


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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *