Python: Pandas
Теория: Работа с индексами
Фильтрация значений и оперирование с их подмножествами используются в задачах обработки, подготовки и анализа данных. В этом уроке мы познакомимся c правилами индексирования основных объектов Series и DataFrame, а также узнаем, как с их помощью осуществлять подвыборки нужных строк и столбцов в табличных данных.
Структура объекта DataFrame
Рассмотрим объект DataFrame. Он состоит из набора столбцов, каждый из которых является объектом Series:
Применим функцию type() к столбцу df_orders:
Объект Series спроектирован, чтобы хранить одномерные структуры данных. Он состоит из двух связанных между собой массивов: меток и значений:
Выбрать несколько столбцов можно следующим образом:
При выборе нескольких столбцов мы будем снова получать тип данных DataFrame.
Иногда легче выбросить несколько столбцов, чем перечислять необходимые. В этом случае нужно использовать метод drop():
В методе drop() нужно задавать значение параметра axis. Значение 0 будет указывать, что нужно исключить некоторые строки. Значение 1 указывает на исключение столбцов.
Метод drop() возвращает новый объект DataFrame и оставляет без изменений исходный.
Индексы объектов DataFrame и Series
У каждой строки объекта DataFrame или значения у Series есть индекс. Индекс может быть как числом, так и строкой. Список индексов объектов DataFrame и Series можно получить с помощью атрибута index:
Если нужно, можно изменить значение индексов и имя столбца с индексами:
Строковые индексы обычно называют метки или ключи:
Методы получения значений по индексу
Разберем следующие методы:
- loc() — метод выбора данных на основе меток строк
- iloc() — метод выбора строк согласно их числовой позиции
loc()
Выберем одну строку из объекта DataFrame по ее метке:
Выберем несколько строк:
iloc()
Выберем одну строку:
Выберем несколько строк:
Фильтрация строк и столбцов одновременно
Методы loc() и iloc() позволяют выполнять фильтрацию по строкам и столбцам одновременно. Пример для loc():
Пример для iloc():
Как и при использовании методов отдельно для строк и столбцов, метод loc() ожидает на вход метки, а iloc() — номера позиций строк и столбцов.
Срезы
Срезы позволяют получать совокупности строк в определенном диапазоне. Пример:
В срез данных попали все строки между позициями 1 и 3 включительно. Позиции 1 и 3 соответствуют меткам 'b' и 'd'. Можно строить более интересные срезы:
В данный срез попала каждая вторая строка между строками с метками 'b' и 'f'.
Можно получать срезы со строками и столбцами одновременно:
В срез попала каждая вторая строка между строками с метками 'b' и 'f' и столбцы с метками от 'shop_1' до 'shop_3' включительно.
Аналогично получаются срезы с помощью метода iloc(). Приведем пример, который совпадает по результату с примером выше:
Выводы
Работа с данными может производиться над конкретными элементами, строками, столбцами или их комбинациями. В этом уроке мы познакомились с фильтрацией значений таблиц по индексам строк и столбцов объекта DataFrame библиотеки Pandas. Изложенные методы позволяют получать различные срезы данных в соответствии с условиями на индексы.




