Для фильтрации DataFrame в Python Pandas существует несколько встроенных методов, таких как filter(), query(), isin(), isnull(), notnull() и т. д., а также несколько атрибутов, таких как loc[], iloc[], iat[ ], at[] и т. д. Используя эти предопределенные методы и атрибуты, вы можете выполнить фильтрацию DataFrame и получить желаемый результат в соответствии с вашими условиями.
Давайте шаг за шагом рассмотрим все методы и атрибуты для фильтрации Pandas DataFrame в Python.
- 1. С использованием нарезки
- 2. С помощью выбора столбца или фильтрации столбца
- 3. С использованием метода filter()
- 4. С использованием атрибута iloc[]
- 5. Используя атрибут loc[]
- 6. С использованием query()
- 7. С использованием реляционных условий
- 8. Используя атрибуты iat[] и at[]
- 9. С использованием метода isin()
- 10. Как использовать регулярное выражение
- 11. На основе значений null и notnull
- Заключение
1. С использованием нарезки
Мы можем использовать срезы для фильтрации данных по индексу. Мы должны предоставить диапазон срезов с начальным индексом и конечным индексом. Он вернет строки с заданным диапазоном индексов.
Синтаксис:
df[ start_index : endindex ]
Давайте посмотрим реализацию кода с использованием нарезки.
Код:
import pandas as pd
Employee_data = pd.DataFrame({
'name':['Oliver','Sophie','William','Henry','Amelia','Grace','George'],
'age':[23,45,34,23,26,28,39],
'state': ['California','Texas','New York','Florida','Georgia','Michigan','Florida']
})
filtered_data = Employee_data[2:5]
print(filtered_data)
Выход:
name age state 2 William 34 New York 3 Henry 23 Florida 4 Amelia 26 Georgia
Снимок экрана: пример нарезки с вводом и выводом.

Давайте посмотрим, что произойдет, если мы не зададим значение в start_index или end_index, на другом примере.
Код:
import pandas as pd
Employee_data = pd.DataFrame({
'name':['Oliver','Sophie','William','Henry','Amelia','Grace','George'],
'age':[23,45,34,23,26,28,39],
'state': ['California','Texas','New York','Florida','Georgia','Michigan','Florida']
})
filtered_data = Employee_data[2:]
print(filtered_data)
Выход:
name age state 2 William 34 New York 3 Henry 23 Florida 4 Amelia 26 Georgia 5 Grace 28 Michigan 6 George 39 Florida
Примечание. Если мы не укажем start_index, в качестве начального индекса по умолчанию будет принят 0; если мы не укажем конечный индекс, он будет идти до конца последовательности.

2. С помощью выбора столбца или фильтрации столбца
Мы можем использовать метод Column Selection для фильтрации DataFrame Python Pandas, указав определенное имя столбца на основе условий, примененных к одному или нескольким столбцам.
Синтаксис:
df[['column_name','column_name']]
Код:
import pandas as pd
Employee_data = pd.DataFrame({
'name':['Oliver','Sophie','William','Henry','Amelia','Grace','George'],
'age':[23,45,34,23,26,28,39],
'state': ['California','Texas','New York','Florida','Georgia','Michigan','Florida'],
'salary': [5000,9000,8500,15000,21000,4000,7500]
})
filtered_data = Employee_data[['name', 'salary']]
print(filtered_data)
Выход:
name salary 0 Oliver 5000 1 Sophie 9000 2 William 8500 3 Henry 15000 4 Amelia 21000 5 Grace 4000 6 George 7500
Снимок экрана:

3. С использованием метода filter()
Мы можем фильтровать DataFrame, используя встроенный метод filter(). Использование этого метода — это гибкий способ фильтрации данных из Pandas на основе различных условий. Вот практический пример использования метода filter().
Синтаксис:
df.filter(["column_name", "column_name" ,...])
Реализация метода filter() с параметром items.
Код:
import pandas as pd
Customer_data = {'Name' : ['John', 'Frankline', 'James'] ,
'Age': [20, 26, 63],
'City' : ["London", 'Bristol' ,'Cardiff']}
Customer_df = pd.DataFrame(Customer_data)
filtered_Customer_Data = Customer_df.filter(items=["Age","City"])
print(filtered_Customer_Data)
Выход:
Age City 0 20 London 1 26 Bristol 2 63 Cardiff
Скриншот примера с параметром items

4. С использованием атрибута iloc[]
Чтобы фильтровать DataFrame в Pandas, мы можем использовать iloc(индексирование на основе целочисленного местоположения). Он помогает фильтровать и принимает целочисленные (индексные) значения только в качестве параметра. Он также принимает диапазон в качестве параметра.
Синтаксис:
i) df.iloc[index_value] ii) df.iloc[start_index : end_index]
Код:
import pandas as pd
Employee_data = pd.DataFrame({
'name':['Oliver','Sophie','William','Henry','Amelia','Grace','George'],
'age':[23,45,34,23,26,28,39],
'state': ['California','Texas','New York','Florida','Georgia','Michigan','Florida'],
'salary': [5000,9000,8500,15000,21000,4000,7500]
})
filtered_data = Employee_data.iloc[3]
print(filtered_data)
Выход:
name Henry age 23 state Florida salary 15000 Name: 3, dtype: object
Снимок экрана: пример реализации iloc[] с одним значением

Давайте посмотрим еще один пример iloc, где мы зададим диапазон внутри iloc[]
Код:
import pandas as pd
Employee_data = pd.DataFrame({
'name':['Oliver','Sophie','William','Henry','Amelia','Grace','George'],
'age':[23,45,34,23,26,28,39],
'state': ['California','Texas','New York','Florida','Georgia','Michigan','Florida'],
'salary': [5000,9000,8500,15000,21000,4000,7500]
})
filtered_data = Employee_data.iloc[2:6]
print(filtered_data)
Выход:
name age state salary 2 William 34 New York 8500 3 Henry 23 Florida 15000 4 Amelia 26 Georgia 21000 5 Grace 28 Michigan 4000
Изображение фильтра данных DataFrame с использованием диапазона внутри iloc[]
![4. С использованием атрибута iloc[]](https://online-python-compiler.ru/wp-content/uploads/2024/04/4.-s-ispolzovaniem-atributa-iloc.png)
5. Используя атрибут loc[]
Мы можем использовать loc(location) для фильтрации DataFrame в Pandas, когда индекс задается вручную. Атрибут loc принимает как числовые значения, так и символы.
Здесь вы увидите, как устанавливать значения индекса вручную и как использовать функцию loc для фильтрации DataFrame в Pandas.
Синтаксис:
i) df.loc['index_name'] -> To access the data of single Row ii) df.loc[['index_name', 'index_name']] -> To access the data of Multiple rows iii) df.loc['index' : 'index'] -> You can also give range by giving index_name in loc.
Код:
import pandas as pd
Book_Data = {
'Title': ['The Great Gatsby', 'To Kill a Mockingbird', '1984'],
'Author': ['Scott Fitzgerald', 'Harper Lee', 'George Orwell'],
'Genre': ['Fiction', 'Fiction', 'Dystopian Fiction'],
'Publication_Year': [1925, 1960, 1949],
'Pages': [180, 281, 328]
}
df_books = pd.DataFrame(Book_Data, index = ['A','B','C'])
filtered_data = df_books.loc['B']
print(filtered_data)
Выход:
Title To Kill a Mockingbird Author Harper Lee Genre Fiction Publication_Year 1960 Pages 281 Name: B, dtype: object
![5. Используя атрибут loc[]](https://online-python-compiler.ru/wp-content/uploads/2024/04/5.-ispolzuya-atribut-loc.png)
Давайте посмотрим еще один пример добавления нескольких индексов с помощью loc.
Код:
import pandas as pd
Book_Data = {
'Title': ['The Great Gatsby', 'To Kill a Mockingbird', '1984'],
'Author': ['Scott Fitzgerald', 'Harper Lee', 'George Orwell'],
'Genre': ['Fiction', 'Fiction', 'Dystopian Fiction'],
'Publication_Year': [1925, 1960, 1949],
'Pages': [180, 281, 328]
}
df_books = pd.DataFrame(Book_Data, index = ['A','B','C'])
filtered_data = df_books.loc[['A','C']]
print(filtered_data)
Выход
Title Author Genre Publication_Year Pages A The Great Gatsby Scott Fitzgerald Fiction 1925 180 C 1984 George Orwell Dystopian Fiction 1949 328

6. С использованием query()
Мы можем использовать метод query() для фильтрации строк DataFrame Python Pandas на основе заданного условия.
Вот пример метода query() для фильтрации DataFrame и того, как задавать условия внутри query() в качестве параметра.
Синтаксис:
1) df.query("expression")
2) df.query("expression1 and expression2 .....") ->(For multiple conditions you can use and,
or operator)
Код:
import pandas as pd
Temprature = pd.DataFrame.from_dict({
"city": ["New York","Los Angeles","Chicago","Phoenix","Dallas","San Francisco"],
"celsius": [21,28,16,32,38,20],
'fahrenheit': [25.6, 82.4, 60.8, 89.6, 100.4, 68.0]
})
check_temperature = 20
filtered_data =Temprature.query('celsius >= @check_temperature')
print(filtered_data)
Выход:
city celsius fahrenheit 0 New York 21 25.6 1 Los Angeles 28 82.4 3 Phoenix 32 89.6 4 Dallas 38 100.4 5 San Francisco 20 68.0
Примечание. Если вы хотите получить доступ к переменной внутри метода query(), вы должны использовать «@var_name», иначе он будет искать имя_столбца.
Снимок экрана:

Множественные условия внутри метода запроса. Мы также можем задать несколько условий внутри метода запроса, используя оператор и/или. Вы можете использовать & и | операторы, это считается операторами and или or.
Код:
import pandas as pd
Temprature = pd.DataFrame.from_dict({
"city": ["New York","Los Angeles","Chicago","Phoenix","Dallas","San Francisco"],
"celsius": [21,28,16,32,38,20],
'fahrenheit': [25.6, 82.4, 60.8, 89.6, 100.4, 68.0]
})
check_temperature = 20
filtered_data =Temprature.query('celsius >= @check_temperature and fahrenheit <= 80')
print(filtered_data)
Выход:
city celsius fahrenheit 0 New York 21 25.6 5 San Francisco 20 68.0
Снимок экрана: пример нескольких условий в методе query().

7. С использованием реляционных условий
Мы также можем фильтровать DataFrame без использования какого-либо встроенного метода или атрибута, что является наиболее распространенным способом достижения желаемого результата.
Для этого мы можем использовать реляционные условия для фильтрации DataFrame в Pandas. Мы можем использовать все эти операторы(, ==, =) для фильтрации DataFrame на практическом примере.
Код:
import pandas as pd
Consumer_data = [
['John', 'Doe', 30, 'male'],
['Jane', 'Smith', 25, 'female'],
['Peter', 'Jones', 40, 'male'],
['Susan', 'Williams', 55, 'female']
]
Customer_Dataframe = pd.DataFrame(Consumer_data, columns=['name', 'last_name', 'age','gender'])
filter_data = Customer_Dataframe[Customer_Dataframe['age']>32]
print(filter_data)
Выход:
name last_name age gender 2 Peter Jones 40 male 3 Susan Williams 55 female
Снимок экрана: использование реляционного условия для фильтрации DataFrame.

Код:
import pandas as pd
Consumer_data = [
['John', 'Doe', 30, 'male'],
['Jane', 'Smith', 25, 'female'],
['Peter', 'Jones', 40, 'male'],
['Susan', 'Williams', 55, 'female']
]
Customer_Dataframe = pd.DataFrame(Consumer_data, columns=['name', 'last_name', 'age','gender'])
filter_data = Customer_Dataframe[(Customer_Dataframe['age']>32) &(Customer_Dataframe['gender'] == 'female')]
print(filter_data)
Выход
name last_name age gender 3 Susan Williams 55 female
Снимок экрана: добавление нескольких условий в реляционные условия.

8. Используя атрибуты iat[] и at[]
Чтобы фильтровать DataFrame, вы можете использовать атрибуты at[] и iat[], которые используются для доступа к отдельным значениям из DataFrame Pandas с помощью адреса строки и столбца.
| атрибут at[] | используется для фильтрации DataFrame по метке (имя индекса задается вручную). |
| атрибут iat[] | используется для фильтрации DataFrame по целочисленной позиции (index_value). |
Синтаксис:
1) df.at['label_name' , 'column_name] 2) df.iat['row_index_value', 'column_name']
Реализация метода at[] в Pandas.
import pandas as pd
food_menu = {
"pizza_type": ['Margerita', "Onion", "Paneer" , "Mashroom"],
"price": [120, 180 , 150, 220],
"is_available": [True, False, False, True]
}
food_menu_df = pd.DataFrame(food_menu,index = ['A', 'B', 'C','D'])
filtered_menu = food_menu_df.at['D','pizza_type']
print(filtered_menu)
Выход:
Mashroom
Скриншот примера at[]:
![8. Используя атрибуты iat[] и at[]](https://online-python-compiler.ru/wp-content/uploads/2024/04/8.-ispolzuya-atributy-iat-i-at.png)
Реализация примера с использованием метода iat[].
import pandas as pd
food_menu = {
"pizza_type": ['Margerita', "Onion", "Paneer" , "Mashroom"],
"price": [120, 180 , 150, 220],
"is_available": [True, False, False, True]
}
food_menu_df = pd.DataFrame(food_menu,index = ['A', 'B', 'C','D'])
filtered_menu = food_menu_df.iat[2,0]
print(filtered_menu)
Выход:
Paneer
Скриншот примера iat[]:
![Фильтрация DataFrame в Python Pandas с использованием метода iat[]](https://online-python-compiler.ru/wp-content/uploads/2024/04/filtratsiya-dataframe-v-python-pandas-s-ispolzovaniem-metoda-iat.png)
9. С использованием метода isin()
В Python библиотека Pandas имеет один мощный встроенный метод isin().
Он используется для фильтрации строк Dataframe на основе заданного условия. Вы можете напрямую указать значение внутри функции isin() в качестве параметра, и он будет фильтровать DataFrame на основе заданного значения.
Синтаксис:
df['columm_name'].isin(['value'])
Код:
import pandas as pd
Consumer_data = [
['John', 'California', 30, 'male',True],
['Jane', 'Texas', 25, 'female',False],
['Peter', 'New York', 40, 'male',True],
['Susan', 'Florida', 52, 'female',False],
['Oliver', 'Illinois', 54, 'female',True],
['Sophie', 'Pennsylvania', 36, 'female',False],
['William', 'Ohio', 48, 'male',True],
['Henry', 'Georgia', 42, 'male',False],
['Amelia', 'North Carolina', 55, 'female',True],
['George', 'Michigan', 34, 'male',False],
['Grace', 'California', 37, 'female',True],
]
Customer_Dataframe = pd.DataFrame(Consumer_data, columns=['name', 'state', 'age','gender','is_active'])
filtered_data = Customer_Dataframe[Customer_Dataframe['gender'].isin(['male'])]
print(filtered_data)
Выход:
name state age gender is_active 0 John California 30 male True 2 Peter New York 40 male True 6 William Ohio 48 male True 7 Henry Georgia 42 male False 9 George Michigan 34 male False
Изображение реализации фильтрации DataFrame с использованием метода isin().

Мы также можем фильтровать данные, используя несколько условий в функции isin().
Код:
import pandas as pd
Consumer_data = [
['John', 'California', 30, 'male',True],
['Jane', 'Texas', 25, 'female',False],
['Peter', 'New York', 40, 'male',True],
['Susan', 'Florida', 52, 'female',False],
['Oliver', 'Illinois', 54, 'female',True],
['Sophie', 'Pennsylvania', 36, 'female',False],
['William', 'Ohio', 48, 'male',True],
['Henry', 'Georgia', 42, 'male',False],
['Amelia', 'North Carolina', 55, 'female',True],
['George', 'Michigan', 34, 'male',False],
['Grace', 'California', 37, 'female',True],
]
Customer_Dataframe = pd.DataFrame(Consumer_data, columns=['name', 'state', 'age','gender','is_active'])
selected_gender = ["male"]
check_availability = [True]
filter_data = Customer_Dataframe[(Customer_Dataframe['gender'].isin(selected_gender)) &(Customer_Dataframe['is_active'].isin(check_availability))]
print(filter_data)
Выход:
name state age gender is_active 0 John California 30 male True 2 Peter New York 40 male True 6 William Ohio 48 male True
Снимок экрана: функция isin() использует несколько условий для фильтрации DataFrame в Python Pandas.

10. Как использовать регулярное выражение
Чтобы фильтровать DataFrame в Pandas, мы можем использовать регулярное выражение, которое представляет собой последовательность символов и полезно для обнаружения присутствия и отсутствия строки путем сопоставления с конкретным заданным шаблоном.
Давайте разберемся, как мы можем использовать этот мощный метод для фильтрации DataFrame Python Pandas на основе заданного шаблона.
Синтаксис:
df[df['column_name'].str.contains('pattern')] -> contains() method will check whole string
and return True if given pattern match the
string.
Практический пример использования метода contains() библиотеки Python.
Код:
import pandas as pd
data = {'name': ['John', 'George', 'Derik', 'Grace', 'Victor'],
'age': [24, 32, 23, 47, 25],
'country': ['Brazil', 'Mexico', 'Cambodia', 'Bolivia', 'India']
}
df = pd.DataFrame(data)
df_filtered = df[df['name'].str.contains('e')]
print(df_filtered)
Выход:
name age country 1 George 32 Mexico 2 Derik 23 Cambodia 3 Grace 47 Bolivia
Снимок экрана: пример регулярного выражения с использованием функции contains().

11. На основе значений null и notnull
Null — это не что иное, как пустое поле, не содержащее значения. Если вам нужно отфильтровать DataFrame на основе значений null и notnull, в библиотеке Pandas есть встроенные методы, называемые isnull() и notnull().
- isnull() используется для обнаружения отсутствующих или пустых значений в DataFrame.
- notnull() проверит, что все поля не являются нулевыми.
Давайте разберемся на практическом примере с использованием метода isnull().
import pandas as pd
Consumer_data = [
['John', 'California', 30, 'male',True],
['Jane', 'Texas', 25, 'female',False],
['Peter', None, 40, 'male',True],
['Susan', 'Florida', 52, 'female',False],
['Oliver', None, 54, 'female',True],
['Sophie', 'Pennsylvania', 36, 'female',False],
['William', None, 48, 'male',True],
['Henry', 'Georgia', 42, 'male',False],
['Amelia', 'North Carolina', 55, 'female',True],
['George', None, 34, 'male',False],
['Grace', 'California', 37, 'female',True],
]
Customer_Dataframe = pd.DataFrame(Consumer_data, columns=['name', 'state', 'age','gender','is_active'])
filtered_data = Customer_Dataframe[Customer_Dataframe['state'].isnull()]
print(filtered_data)
Выход:
name state age gender is_active 2 Peter None 40 male True 4 Oliver None 54 female True 6 William None 48 male True 9 George None 34 male False
Снимок экрана: пример использования метода isnull().

Код:
import pandas as pd
Consumer_data = [
['John', 'California', 30, 'male',True],
['Jane', 'Texas', 25, 'female',False],
['Peter', None, 40, 'male',True],
['Susan', 'Florida', 52, 'female',False],
['Oliver', None, 54, 'female',True],
['Sophie', 'Pennsylvania', 36, 'female',False],
['William', None, 48, 'male',True],
['Henry', 'Georgia', 42, 'male',False],
['Amelia', 'North Carolina', 55, 'female',True],
['George', None, 34, 'male',False],
['Grace', 'California', 37, 'female',True],
]
Customer_Dataframe = pd.DataFrame(Consumer_data, columns=['name', 'state', 'age','gender','is_active'])
filtered_data = Customer_Dataframe[Customer_Dataframe['state'].notnull()]
print(filtered_data)
Выход:
name state age gender is_active 0 John California 30 male True 1 Jane Texas 25 female False 3 Susan Florida 52 female False 5 Sophie Pennsylvania 36 female False 7 Henry Georgia 42 male False 8 Amelia North Carolina 55 female True 10 Grace California 37 female True
Снимок экрана: пример использования метода notnull().

Заключение
В этом уроке я объяснил, как фильтровать пути DataFrame в Python Pandas, используя 11 различных методов и атрибутов, таких как filter(), query(), isin(), isnull(), notnull(), at[], iat[], loc[], iloc[] и т. д. с некоторыми примерами.