Series является одним из двух ключевых типов данных в Pandas и
в этом уроке мы на примерах разберем как фильтровать информацию в Series, как выбирать только
те записи, которые нас интересуют.
Итак, у нас сегодня будут названия автомобилей и их скорость:
cars = pd.Series({'BMW':230, 'Mercedes':250,'Ferarri':350, 'Lamborghini':380,'Bugatti':460},
index=['BMW','Mercedes','Ferarri','Lamborghini','Bugatti','Lada'])
Обратите внимание, что количество индексов в нашей Series не соответствует количеству значений, так для автомобиля Lada мы не стали указывать максимальную скорость и у него значение равно NaN.
Фильтр по одному условию
Для того, чтобы отфильтровать данные по одному условию, мы должны указать сначала имя Series, с которой мы работаем, а далее в квадратных скобках условие для фильтрации.
Давайте отберем те автомобили, у которых скорость больше 300 км/час:
cars[cars>300]Также с помощью специальных функций isnull() и notnull(), мы можем выбирать те строки, которые содержат NaN и данные соответственно. Выберем те автомобили, которым мы не указали скорость:
cars[cars.isnull()]
А теперь те строки, которые содержат информацию о скорости:
cars[cars.notnull()]Обратите внимание, что в Pandas есть функция – синоним, которая выполняет такой же функционал notna():
cars[cars.notna()]
Фильтр по нескольким условиям
Думаю, вы поняли, как фильтровать по одному условию, теперь перейдем к фильтрации по нескольким условиям. Для этого нам понадобятся операторы & (логическое И) и | (логическое ИЛИ). Давайте отберем те автомобили, у которых скорость выше 300 и ниже 400:
cars[(cars>300)&(cars<400)]Обратите внимание, что каждое условие мы должны заключать в круглые скобки. Если вы так не сделаете, то получите ошибку синтаксиса.
Теперь выберем те машины, у которых скорость выше 400, либо ниже 300. Для этого нам понадобится логический оператор ИЛИ:
cars[(cars<300)|(cars>400)]
Фильтрация Series в Pandas при помощи цикла
Кроме встроенного синтаксиса для фильтрации данных в Pandas, мы можем использовать циклы, перебирая все строки. Для этого нам понадобится метод items(). С его помощью мы можем получить как наименование индексов, так и их значение. Давайте выберем те машины, у которых скорость ниже 300 при помощи цикла:for index, value in cars.items():На этом сегодня все. Как обычно, в качестве бонуса, прикладываю ноутбук с текущим уроком. Буду рад вашим комментариям.
if value<300:
print(index)
0 comments:
Отправить комментарий
Спасибо за комментарий.