Для фильтрации 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[]
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
Давайте посмотрим еще один пример добавления нескольких индексов с помощью 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[]:
Реализация примера с использованием метода 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[]:
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[] и т. д. с некоторыми примерами.