Как фильтровать pandas dataframe: простые способы

Чтобы отфильтровать pandas dataframe, вы можете использовать метод query() или метод loc[].

Вот примеры использования:


import pandas as pd

# Создание исходного dataframe
data = {'Name': ['John', 'Alice', 'Bob', 'David'],
        'Age': [25, 30, 35, 40],
        'City': ['New York', 'Paris', 'London', 'Tokyo']}
df = pd.DataFrame(data)

# Фильтрация с использованием метода query()
filtered_df = df.query('Age > 30')
print(filtered_df)

# Фильтрация с использованием метода loc[]
filtered_df = df.loc[df['City'] == 'London']
print(filtered_df)
    

Детальный ответ

Как фильтровать pandas DataFrame?

Фильтрация DataFrame в pandas - это процесс отбора определенных строк или столбцов на основе заданных условий. Этот процесс позволяет вам работать с нужными данными и упрощает анализ и манипуляцию информацией.

Давайте рассмотрим несколько методов для фильтрации DataFrame в pandas.

1. Фильтрация строк

Один из способов отфильтровать строки DataFrame - использование условий. Допустим, у нас есть DataFrame, содержащий информацию о студентах:


import pandas as pd

data = {'Имя': ['Алексей', 'Мария', 'Иван', 'Елена'],
        'Возраст': [18, 20, 19, 21],
        'Оценка': [85, 92, 78, 90]}

df = pd.DataFrame(data)

Теперь предположим, что мы хотим отфильтровать только те строки, где возраст студента больше или равен 20 лет. Мы можем использовать оператор сравнения `>=` для создания условия и применить его к столбцу "Возраст" DataFrame:


filtered_df = df[df['Возраст'] >= 20]

Теперь в `filtered_df` содержатся только строки, которые удовлетворяют условию. Мы можем вывести результат, чтобы убедиться в этом:


print(filtered_df)

Вывод:


      Имя  Возраст  Оценка
1  Мария       20     92
3  Елена       21     90

2. Фильтрация столбцов

Если вы хотите выбрать только определенные столбцы DataFrame, вы можете указать их названия в квадратных скобках. Например, давайте выберем только столбцы "Имя" и "Оценка" из DataFrame:


selected_columns = df[['Имя', 'Оценка']]

Теперь в `selected_columns` содержатся только выбранные столбцы. Мы можем вывести результат:


print(selected_columns)

Вывод:


       Имя  Оценка
0  Алексей      85
1    Мария      92
2     Иван      78
3    Елена      90

3. Комбинированная фильтрация

Часто вам может понадобиться объединить несколько условий для более точной фильтрации. Для этого можно использовать логические операторы `&` (и) и `|` (или). Допустим, мы хотим выбрать только те строки, где возраст студента больше или равен 20 лет, и оценка выше 80:


combined_filter = df[(df['Возраст'] >= 20) & (df['Оценка'] > 80)]

В `combined_filter` теперь содержатся только строки, которые удовлетворяют обоим условиям. Мы можем вывести результат:


print(combined_filter)

Вывод:


    Имя  Возраст  Оценка
1  Мария       20     92
3  Елена       21     90

4. Использование метода `query()`

В pandas также есть метод `query()`, который позволяет указывать условия для фильтрации в виде строки. В этом случае вместо логических операторов `&` и `|` используются ключевые слова `and` и `or`. Например, давайте выберем только строки, где возраст студента больше или равен 20 лет, и оценка выше 80, с использованием метода `query()`:


query_filter = df.query('Возраст >= 20 and Оценка > 80')

В `query_filter` теперь содержатся только строки, которые удовлетворяют условию. Мы можем вывести результат:


print(query_filter)

Вывод:


    Имя  Возраст  Оценка
1  Мария       20     92
3  Елена       21     90

5. Использование метода `isin()`

Метод `isin()` позволяет фильтровать DataFrame по нескольким значениям в столбце. Например, давайте выберем только строки, где имя студента является "Мария" или "Иван":


isin_filter = df[df['Имя'].isin(['Мария', 'Иван'])]

Теперь в `isin_filter` содержатся только строки, в которых имя студента равно "Мария" или "Иван". Мы можем вывести результат:


print(isin_filter)

Вывод:


     Имя  Возраст  Оценка
1  Мария       20     92
2   Иван       19     78

6. Использование отрицания

Если вам нужно выбрать строки, которые НЕ удовлетворяют определенному условию, вы можете использовать оператор `~`. Например, давайте выберем только строки, где возраст студента НЕ больше или равен 20:


not_filter = df[~(df['Возраст'] >= 20)]

Теперь в `not_filter` содержатся только строки, которые НЕ удовлетворяют условию. Мы можем вывести результат:


print(not_filter)

Вывод:


      Имя  Возраст  Оценка
0  Алексей      18     85
2     Иван      19     78

7. Очистка NaN значений

Иногда в DataFrame могут быть NaN (Not a Number) значения, которые могут мешать анализу. Вы можете очистить эти значения с помощью метода `dropna()`. Например:


import numpy as np

data = {'Значение1': [1, 2, np.nan, 4, 5],
        'Значение2': [6, np.nan, 8, 9, 10]}

df = pd.DataFrame(data)

cleaned_df = df.dropna()

Теперь `cleaned_df` содержит DataFrame без NaN значений. Мы можем вывести результат:


print(cleaned_df)

Вывод:


   Значение1  Значение2
0        1.0        6.0
3        4.0        9.0
4        5.0       10.0

8. Использование метода `query()` для фильтрации NaN значений

Метод `query()` также может использоваться для фильтрации NaN значений в DataFrame. Например, давайте выберем только строки, в которых нет NaN значений:


query_filter = df.query('Значение1 == Значение1 and Значение2 == Значение2')

Теперь в `query_filter` содержатся только строки без NaN значений. Мы можем вывести результат:


print(query_filter)

Вывод:


   Значение1  Значение2
0        1.0        6.0
3        4.0        9.0
4        5.0       10.0

Заключение

В данной статье мы рассмотрели различные способы фильтрации DataFrame в pandas. Вы можете использовать условия и логические операторы для фильтрации строк и указывать нужные столбцы DataFrame. Также вы узнали о методах `query()` и `isin()` для более удобной фильтрации. Не забывайте, что вы также можете очищать NaN значения с помощью метода `dropna()`. Надеюсь, эта информация будет полезной для вас!

Видео по теме

Python Pandas Tutorial (Part 4): Filtering - Using Conditionals to Filter Rows and Columns

Filtering Columns and Rows in Pandas | Python Pandas Tutorials

How to filter a pandas DataFrame | 6 HELPFUL METHODS

Похожие статьи:

Как фильтровать pandas dataframe: простые способы