Библиотека pandas является одной из наиболее популярных библиотек для анализа данных в языке программирования Python. Одной из самых важных возможностей, предоставляемых этой библиотекой, является работа с данными в таблицах, которые называются DataFrame. Один из вопросов, с которым сталкиваются пользователи pandas, — как выбрать данные из таблицы?
Для этой цели в библиотеке pandas существуют два метода: loc и iloc. Казалось бы, они похожи друг на друга, тем не менее, они имеют некоторые отличия, которые важно знать, чтобы избежать возможных ошибок при работе с данными.
Метод loc используется для выборки данных на основе меток, то есть строк и столбцов с указанными именами. Например, чтобы выбрать значение из таблицы по строке с именем «John» и столбцу с именем «age», необходимо использовать следующую конструкцию: df.loc[«John», «age»].
Основные понятия
Метод loc используется для доступа к данным по меткам (индексу) строк и столбцов. Он принимает два аргумента — метку строки и метку столбца (или срезы меток строк и столбцов) и возвращает соответствующие данные. Например, df.loc[2, 'Name']
будет возвращать значение второй строки в столбце ‘Name’.
Метод iloc используется для доступа к данным по числовым индексам строк и столбцов. Он также принимает два аргумента — числовой индекс строки и числовой индекс столбца (или срезы числовых индексов строк и столбцов) и возвращает соответствующие данные. Например, df.iloc[2, 1]
будет возвращать значение второй строки второго столбца.
Важно отметить, что в отличие от индексации в Python, методы loc и iloc включают начальную и конечную границы среза.
Использование методов loc и iloc позволяет производить выборку данных из датафрейма, основываясь на их метках или числовых индексах, что делает работу с данными более гибкой и интуитивно понятной.
Использование loc
Метод loc
используется для выбора данных по метке. Это означает, что мы можем выбрать данные по имени строки или имени столбца.
Основное применение метода loc
— это доступ к элементам Датафрейма или Серии (столбца), используя метки / их условия.
Примеры использования метода loc
:
- Выбор целой строки по метке:
df.loc[метка]
. - Выбор нескольких строк по меткам:
df.loc[список_меток]
. - Выбор нескольких строк по условию:
df.loc[условие]
. - Выбор целого столбца по метке:
df.loc[:, метка столбца]
. - Выбор нескольких столбцов по меткам:
df.loc[:, список_меток столбцов]
. - Выбор нескольких столбцов по условию:
df.loc[:, условие]
.
Метод loc
также поддерживает использование условий в форме: df.loc[условие_строк, условие_столбцов]
, так что мы можем фильтровать наш Датафрейм по различным значениям.
Кроме того, с помощью метода loc
мы можем изменить значения в выбранных элементах или добавить новые элементы в Датафрейм.
Использование iloc
iloc в библиотеке pandas используется для доступа и среза данных в DataFrame с использованием целочисленных индексов. Он позволяет выбирать строки и столбцы на основе их позиции в DataFrame.
Для использования iloc необходимо указать положение строки и столбца, начиная с 0. Для выбора всей строки или столбца можно использовать символ «:».
Пример использования iloc:
import pandas as pd
# создаем DataFrame
data = {'Имя': ['Алексей', 'Мария', 'Дмитрий', 'Екатерина'],
'Возраст': [25, 18, 35, 27],
'Город': ['Москва', 'Санкт-Петербург', 'Новосибирск', 'Екатеринбург']}
df = pd.DataFrame(data)
# выбор одной строки
row = df.iloc[0]
print(row)
# выбор одного элемента
element = df.iloc[1, 2]
print(element)
# выбор нескольких строк и столбцов
selection = df.iloc[1:3, 0:2]
print(selection)
В данном примере мы создаем DataFrame с данными о людях, а затем используем iloc для выбора конкретных строк и столбцов.
Обратите внимание, что iloc возвращает Series для выбора одной строки или одного элемента, и DataFrame для выбора нескольких строк и столбцов.
Использование iloc позволяет более гибко работать с данными в DataFrame, особенно при наличии большого количества строк и столбцов.
Сравнение loc и iloc
Метод loc используется для доступа к данным по меткам (названиям) строк и столбцов. Он принимает два аргумента: первый — индекс строки, второй — индекс столбца. Таким образом, его синтаксис выглядит так: df.loc[row_index, column_index]. Например, df.loc[3, ‘age’] вернет значение из строки с индексом 3 и столбца с названием ‘age’.
Метод iloc, в свою очередь, используется для доступа к данным по целочисленным индексам строк и столбцов. Он также принимает два аргумента: первый — целочисленный индекс строки, второй — целочисленный индекс столбца. Синтаксис iloc выглядит следующим образом: df.iloc[row_index, column_index]. Например, df.iloc[3, 2] вернет значение из третьей строки и третьего столбца.
Основное отличие между loc и iloc состоит в том, что loc включает последний индекс, а iloc — не включает. Важно учитывать это, чтобы избежать ошибок при выборе данных. Например, при использовании loc df.loc[1:3, ‘age’] вернет значения из строк с индексами 1, 2 и 3 включительно, в то время как при использовании iloc df.iloc[1:3, 2] вернет значения только из строк с индексами 1 и 2.
Кроме того, loc позволяет выбирать данные с применением логических условий, например: df.loc[df[‘age’] > 30]. При этом iloc не поддерживает такую возможность.
Оба метода могут быть полезными в разных ситуациях и зависят от конкретных требований и задач. Чтобы правильно выбрать подходящий индексатор, важно понимать, как они работают и какие данные необходимо получить из DataFrame.
Примеры использования
Вот несколько примеров использования методов loc и iloc:
Метод loc:
Используем таблицу с данными о студентах:
Имя | Возраст | Пол | Оценка ---------------------------------- Alice | 20 | F | 85 Bob | 21 | M | 93 Charlie| 19 | M | 88
Выбрать данные студента с именем «Bob»:
df.loc[df['Имя'] == 'Bob']
Выбрать данные студента с именем «Alice» и «Charlie», и только столбцы «Возраст» и «Оценка»:
df.loc[df['Имя'].isin(['Alice', 'Charlie']), ['Возраст', 'Оценка']]
Выбрать всех студентов со значениями возраста больше 20:
df.loc[df['Возраст'] > 20]
Метод iloc:
Используем таблицу с данными о фруктах:
Индекс | Фрукт ------------------- 0 | Яблоко 1 | Банан 2 | Груша
Выбрать данные фрукта с индексом 1:
df.iloc[1]
Выбрать данные фрукта с индексом 0 и 2:
df.iloc[[0, 2]]
Выбрать данные всех фруктов:
df.iloc[:]
Таким образом, метод loc используется для выбора данных на основе их меток (имен столбцов и индексов), а метод iloc используется для выбора данных на основе их наличия в таблице (по счету столбцов и строк).