В библиотеке Pandas методы loc
и iloc
– это мощные инструменты для индексации и выборки данных из DataFrame и Series. В отличие от базовых методов at
и iat
, которые обеспечивают быстрый доступ к отдельным элементам, loc
и iloc
позволяют выполнять более сложные операции с выборками.
loc
: используется для индексации с помощью меток.iloc
: используется для индексации по целочисленным позициям.Для начала создадим простой 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
Используя ранее созданный DataFrame:
Выбор строки по индексу:
print(df.iloc[0]) # Выведет первую строку
Выбор нескольких строк и столбцов:
print(df.iloc[0:2, 0:2])
Выбор строки и столбца:
print(df.iloc[1, 1]) # Выведет значение из второй строки и второго столбца
При использовании срезов с loc
и iloc
необходимо помнить об их особенностях:
Срезы с loc: Включают в себя обе границы.
print(df.loc['x':'y']) # Включает строки 'x' и 'y'
Срезы с iloc: Включают начальную границу, но исключают конечную.
print(df.iloc[0:2]) # Включает 0-й и 1-й индексы, но не включает 2-й
loc
может использоваться с булевой индексацией, что делает выборку данных особенно гибкой:
print(df.loc[df['A'] > 1 & (df['B'] < 6)])
Этот пример вернёт все строки, в которых значение в столбце A
больше 1 и значение в столбце B
меньше 6.
Вы можете комбинировать методы loc
и iloc
с другими функциями Pandas для продвинутой индексации:
# Получить среднее значение столбца 'A' для строк, где 'B' > 5
mean_value = df.loc[df['B'] > 5, 'A'].mean()
print(mean_value)
Также вы можете использовать loc
и iloc
для установки значений:
df.loc['x', 'A'] = 10
df.iloc[1, 2] = 20
loc
диапазон включает оба конца, в то время как в iloc
– только начальное значение.loc
использует метки, iloc
– целочисленные позиции.loc
или к несуществующему индексу через iloc
будет вызвано исключение.loc
. Если вы работаете с позициями, основанными на числовом порядке, выбирайте iloc
.loc
, так как он включает в себя обе границы диапазона.Методы loc
и iloc
– ключевые инструменты при работе с данными в Pandas. Они предоставляют гибкость и мощь, которые делают Pandas одним из лучших инструментов для анализа данных.
Содержание: