Разница между loc и iloc в библиотеке pandas

Библиотека 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 используется для выбора данных на основе их наличия в таблице (по счету столбцов и строк).

Оцените статью