Pandas: методы loc и iloc

Сложные запросы данных в Pandas с использованием методов loc и iloc

В библиотеке Pandas методы loc и iloc – это мощные инструменты для индексации и выборки данных из DataFrame и Series. В отличие от базовых методов at и iat, которые обеспечивают быстрый доступ к отдельным элементам, loc и iloc позволяют выполнять более сложные операции с выборками.

  • loc: используется для индексации с помощью меток.
  • iloc: используется для индексации по целочисленным позициям.

Работа с loc

Для начала создадим простой DataFrame:

import pandas as pd

df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [4, 5, 6],
    'C': [7, 8, 9]
}, index=['x', 'y', 'z'])

Выбор строки по метке:

df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [4, 5, 6],
    'C': [7, 8, 9]
}, index=['x', 'y', 'z'])

print(df.loc['x'])  # Выведет строку с меткой 'x'

# A    1
# B    4
# C    7
# Name: x, dtype: int64

Выбор нескольких строк и столбцов:

df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [4, 5, 6],
    'C': [7, 8, 9]
}, index=['x', 'y', 'z'])

print(df.loc[['x', 'y'], ['A', 'B']])

#    A  B
# x  1  4
# y  2  5

Использование условных операторов:

df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [4, 5, 6],
    'C': [7, 8, 9]
}, index=['x', 'y', 'z'])

print(df.loc[df['A'] > 1])

#    A  B  C
# y  2  5  8
# z  3  6  9

Работа с iloc

Используя ранее созданный DataFrame:

Выбор строки по индексу:

print(df.iloc[0])  # Выведет первую строку

Выбор нескольких строк и столбцов:

print(df.iloc[0:2, 0:2])

Выбор строки и столбца:

print(df.iloc[1, 1])  # Выведет значение из второй строки и второго столбца

Срезы с помощью loc и iloc

При использовании срезов с loc и iloc необходимо помнить об их особенностях:

Срезы с loc: Включают в себя обе границы.

print(df.loc['x':'y'])  # Включает строки 'x' и 'y'

Срезы с iloc: Включают начальную границу, но исключают конечную.

print(df.iloc[0:2])  # Включает 0-й и 1-й индексы, но не включает 2-й

Булева индексация с loc

loc может использоваться с булевой индексацией, что делает выборку данных особенно гибкой:

print(df.loc[df['A'] > 1 & (df['B'] < 6)])

Этот пример вернёт все строки, в которых значение в столбце A больше 1 и значение в столбце B меньше 6.

Использование функций с loc и iloc

Вы можете комбинировать методы loc и iloc с другими функциями Pandas для продвинутой индексации:

# Получить среднее значение столбца 'A' для строк, где 'B' > 5
mean_value = df.loc[df['B'] > 5, 'A'].mean()
print(mean_value)

Установка значений с loc и iloc

Также вы можете использовать loc и iloc для установки значений:

df.loc['x', 'A'] = 10
df.iloc[1, 2] = 20

Различия между loc и iloc

  • Диапазоны: В loc диапазон включает оба конца, в то время как в iloc – только начальное значение.
  • Типы индексов: loc использует метки, iloc – целочисленные позиции.
  • Ошибки: При попытке обратиться к несуществующей метке через loc или к несуществующему индексу через iloc будет вызвано исключение.

Советы по использованию

  • Если у вас есть конкретные метки для индексации, используйте loc. Если вы работаете с позициями, основанными на числовом порядке, выбирайте iloc.
  • Будьте осторожны с диапазонами, особенно когда используете loc, так как он включает в себя обе границы диапазона.
  • Всегда проверяйте размерность возвращаемых данных, особенно если вы работаете с большими наборами данных. Это может помочь избежать ошибок и ускорить работу.

Заключение

Методы loc и iloc – ключевые инструменты при работе с данными в Pandas. Они предоставляют гибкость и мощь, которые делают Pandas одним из лучших инструментов для анализа данных.

Содержание: