В работе с большими объемами данных скорость доступа к данным становится критически важной. Методы at
и iat
предоставлены библиотекой Pandas именно для быстрого доступа к отдельным элементам DataFrame или Series.
at
: предоставляет доступ к отдельной ячейке данных для DataFrame, используя метки (или названия) строки и столбца.iat
: аналогичен методу at
, но здесь индексация осуществляется с помощью целочисленных индексов. Он немного быстрее, так как обходит процесс поиска метки.Создадим простой DataFrame:
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6],
'C': [7, 8, 9]
}, index=['x', 'y', 'z'])
Теперь, если вы хотите получить значение из строки y
и столбца B
, вы можете использовать at
:
value = df.at['y', 'B']
print(value) # Выведет: 5
Для изменения значения:
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6],
'C': [7, 8, 9]
}, index=['x', 'y', 'z'])
df.at['y', 'B'] = 10
print(df)
# A B C
# x 1 4 7
# y 2 10 8
# z 3 6 9
Используя тот же DataFrame, чтобы получить значение из второй строки (индекс 1) и второго столбца (индекс 1):
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6],
'C': [7, 8, 9]
}, index=['x', 'y', 'z'])
value = df.iat[1, 1]
print(value) # 5
Для изменения значения:
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6],
'C': [7, 8, 9]
}, index=['x', 'y', 'z'])
df.iat[1, 1] = 10
print(df)
# A B C
# x 1 4 7
# y 2 10 8
# z 3 6 9
Методы at
и iat
предназначены для быстрого доступа к отдельным ячейкам, и они обычно быстрее, чем loc
и iloc
. Однако это преимущество наиболее заметно на больших наборах данных. На маленьких наборах разница может быть незаметной.
loc
или iloc
.at
и iat
не поддерживают слайсинг.Оба метода (at
и iat
) поддерживают все типы данных, хранящиеся в DataFrame, включая числа, строки, даты и т. д. При этом сохраняется тип данных, что обеспечивает надежность и предсказуемость взаимодействия.
Если вы попытаетесь обратиться к метке или позиции, которой нет в DataFrame или Series, то будет вызвано исключение. Например:
# Вызовет ошибку, так как нет строки с меткой 'w'
# df.at['w', 'A']
# Аналогично, вызовет ошибку из-за выхода за пределы диапазона
# df.iat[10, 1]
Это поведение гарантирует, что вы не получите неверные данные из-за опечатки или ошибки.
В то время как at
и iat
предоставляют быстрый доступ к данным, всегда стоит помнить о том, что прямое изменение данных в DataFrame может повлечь за собой нежелательные последствия, особенно при работе с большими объемами данных или в средах с несколькими пользователями. Всегда рекомендуется проверять ваши изменения и, при возможности, работать с копией данных, чтобы избежать потери или искажения исходных данных.
Методы at
и iat
– это мощные инструменты, которые обеспечивают быстрый доступ к данным в DataFrame или Series в Pandas. Они особенно полезны, когда необходимо обратиться к конкретной ячейке для чтения или изменения значения. Научившись ими пользоваться, вы сможете повысить эффективность работы с вашими данными.
Содержание: