Три полезных функции для фильтрации данных с помощью Pandas

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

Давайте начнем!

Для наших целей мы будем работать с набором данных FIFA 19, который можно найти здесь.

Для начала давайте импортируем пакет pandas:

import pandas as pd 

Затем давайте установим для максимального количества отображаемых столбцов и строк значение «Нет»:

pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)

Теперь давайте прочитаем наши данные:

df = pd.read_csv('fifa_data.csv')

Затем мы распечатаем первые пять строк данных, чтобы получить представление о типах столбцов и их значениях (результаты столбцов усекаются):

print(df.head())

Первая функция, которую мы можем рассмотреть, - это фильтрация по категориям. Давайте определим нашу функцию filter_category. Наша функция примет категорию и значение категории:

def filter_category(category, category_value):

Мы можем использовать оператор «loc» для выбора строк, в которых значение категории - это то, что мы выбираем:

def filter_category(category, category_value):
    df_filter = df.loc[df[category] == category_value]
    return df_filter

Давайте отфильтруем аргентинскую национальность:

df_filter = filter_category('Nationality', 'Argentina')
print(df_filter.head())

Мы видим, что все значения для «Национальности» - «Аргентина». Еще один тип функции, которая может быть полезной, - это функция фильтрации по списку значений:

def filter_category_with_list(category, category_value_list):
    df_filter = df.loc[df[category].isin(category_value_list)]
    return df_filter

Мы можем отфильтровать строки, в которых "Национальность" - "Бразилия", "Испания" или "Аргентина":

df_filter = filter_category_with_list('Nationality', ['Brazil', 'Spain', 'Argentina'])
print(df_filter.head())

Мы также можем выполнить фильтрацию по категориальному столбцу «Клуб». Давайте отфильтруем "Манчестер Сити", "Реал Мадрид" и "Барселону":

df_filter = filter_category_with_list('Club', [‘Manchester City’, ‘Real Madrid’, ‘FC Barcelona’])
print(df_filter.head())

Мы также можем определить функцию, которая фильтрует по числовому значению. Функция сможет фильтровать строки на основе входного значения и того, являются ли строки больше, меньше или равны входному значению:

def filter_numerical(numerical, numerical_value, relationship):
    if relationship == 'greater':
        df_filter = df.loc[df[numerical] > numerical_value]
    elif relationship == 'less':
        df_filter = df.loc[df[numerical] < numerical_value]     
    else: 
        df_filter = df.loc[df[numerical] == numerical_value]  
    return df_filter

Мы можем отфильтровать строки, в которых возраст футболиста превышает 30:

df_filter = filter_numerical('Age', 30, 'greater')
print(df_filter.head())

Менее 30:

df_filter = filter_numerical('Age', 30, 'less')
print(df_filter.head())

Или равно 30:

df_filter = filter_numerical('Age', 30, 'equal')
print(df_filter.head())

Мы также можем фильтровать по заработной плате. Сначала давайте конвертируем заработную плату в число с плавающей запятой:

f['Wage'] = df['Wage'].str.lstrip('€')
df['Wage'] = df['Wage'].str.rstrip('K')
df['Wage'] = df['Wage'].astype(float)*1000.0
print(df['Wage'].head())

Теперь давайте отфильтруем заработную плату менее 100000 евро:

df_filter = filter_numerical('Wage', 100000, 'less')
print(df_filter.head())

На этом я остановлюсь, но я призываю вас поэкспериментировать с данными и кодом самостоятельно. Интересная функция для записи - это функция, которая фильтрует как по числовым, так и по категориальным значениям столбцов.

ВЫВОДЫ

Подводя итог, в этом посте мы обсудили, как определить три функции, которые позволяют нам легко фильтровать строки данных. Сначала мы обсудили, как фильтровать строки данных по одному категориальному значению. Затем мы обсудим, как фильтровать строки, используя список категориальных значений. Наконец, мы показали, как фильтровать строки данных по числовым значениям столбцов. Если вам интересно узнать больше о манипулировании данными с помощью pandas, машинном обучении или даже о некоторых основах программирования на Python, ознакомьтесь с Python для науки о данных и машинного обучения: Python Programming, Pandas и Scikit-learn Tutorials для начинающих. . Надеюсь, этот пост был для вас интересен. Код из этого поста доступен на GitHub. Спасибо за чтение!