Технологии Blogger.

Series в Pandas. Фильтрация данных

Series является одним из двух ключевых типов данных в Pandas и в этом уроке мы на примерах разберем как фильтровать информацию в Series, как выбирать только те записи, которые нас интересуют.

Series в Pandas. Фильтрация данных
Для начала давайте создадим Series, с которой будем работать в дальнейшем. Кстати, если вы еще не знаете какими способами можно создать Series в Pandas, то обязательно прочитайте нашу статью.
Итак, у нас сегодня будут названия автомобилей и их скорость:
cars = pd.Series({'BMW':230, 'Mercedes':250,'Ferarri':350, 'Lamborghini':380,'Bugatti':460},
                index=['BMW','Mercedes','Ferarri','Lamborghini','Bugatti','Lada'])

Series в Pandas. Фильтрация данных

Обратите внимание, что количество индексов в нашей Series не соответствует количеству значений, так для автомобиля Lada мы не стали указывать максимальную скорость и у него значение равно NaN.

Фильтр по одному условию

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

cars[cars>300]

Series в Pandas. Фильтрация данных
Также с помощью специальных функций isnull() и notnull(), мы можем выбирать те строки, которые содержат NaN и данные соответственно. Выберем те автомобили, которым мы не указали скорость:
cars[cars.isnull()]

Series в Pandas. Фильтрация данных

А теперь те строки, которые содержат информацию о скорости:

cars[cars.notnull()]

Series в Pandas. Фильтрация данных
Обратите внимание, что в Pandas есть функция – синоним, которая выполняет такой же функционал notna():
cars[cars.notna()]
Series в Pandas. Фильтрация данных

Фильтр по нескольким условиям

Думаю, вы поняли, как фильтровать по одному условию, теперь перейдем к фильтрации по нескольким условиям. Для этого нам понадобятся операторы & (логическое И) и | (логическое ИЛИ). Давайте отберем те автомобили, у которых скорость выше 300 и ниже 400:

cars[(cars>300)&(cars<400)]

Series в Pandas. Фильтрация данных
Обратите внимание, что каждое условие мы должны заключать в круглые скобки. Если вы так не сделаете, то получите ошибку синтаксиса.
Теперь выберем те машины, у которых скорость выше 400, либо ниже 300. Для этого нам понадобится логический оператор ИЛИ:
cars[(cars<300)|(cars>400)]

Series в Pandas. Фильтрация данных

Фильтрация Series в Pandas при помощи цикла

Кроме встроенного синтаксиса для фильтрации данных в Pandas, мы можем использовать циклы, перебирая все строки. Для этого нам понадобится метод items(). С его помощью мы можем получить как наименование индексов, так и их значение. Давайте выберем те машины, у которых скорость ниже 300 при помощи цикла:
for index, value in cars.items():
    if value<300:
        print(index)
Series в Pandas. Фильтрация данных
На этом сегодня все. Как обычно, в качестве бонуса, прикладываю ноутбук с текущим уроком. Буду рад вашим комментариям.

0 comments:

Отправить комментарий

Спасибо за комментарий.