파이썬/데이터프레임 다루기

Pandas at vs loc – 헷갈리지 말고 정확히 쓰자!

Data Jun 2025. 3. 25. 11:11

Pandas를 쓰다 보면 종종 등장하는 at과 loc.
비슷해 보이지만 성능과 사용 방식에 있어 큰 차이가 있습니다.
이번 포스트에서는 at과 loc의 차이점, 쓰임새, 성능 차이를 알아보고,
언제 어떤 걸 써야 하는지 정리해보겠습니다!

 

먼저 개념부터!

 

예제 데이터

import pandas as pd

df = pd.DataFrame({
    '이름': ['철수', '영희', '민수'],
    '점수': [85, 90, 88]
}, index=['a', 'b', 'c'])

print(df)

 

loc 사용법

▶ 특정 셀에 접근

df.loc['a', '이름']  # '철수'

▶ 여러 행, 열에 접근

df.loc[['a', 'b'], ['이름', '점수']]

▶ 값 변경도 가능

df.loc['b', '점수'] = 95

 

at 사용법 (속도에 특화)

▶ 딱 하나의 셀에 빠르게 접근

df.at['a', '이름']  # '철수'

▶ 값 변경도 가능

df.at['b', '점수'] = 97

 

성능 비교

at은 단일 셀 접근 시 loc보다 훨씬 빠릅니다.
특히 반복문 내에서 단일 셀에 반복적으로 접근해야 할 때 at을 쓰면 성능 차이가 큽니다.

 

 

실험: 속도 차이 비교

import time

# 큰 데이터프레임 생성
big_df = pd.DataFrame({'A': range(10000)}, index=range(10000))

# loc 시간
start = time.time()
for i in range(10000):
    _ = big_df.loc[i, 'A']
print("loc:", time.time() - start)

# at 시간
start = time.time()
for i in range(10000):
    _ = big_df.at[i, 'A']
print("at:", time.time() - start)

결과 예시 (환경마다 다름)

loc: 0.34초  
at: 0.05초  ✅

 

언제 어떤 걸 써야 할까?

정리

  • loc: 범위, 조건 필터링 등 유연한 접근이 가능
  • at: 오직 하나의 셀만 다루지만 엄청 빠름!

Pandas에서 성능과 가독성을 챙기고 싶다면,
"한 칸만 보고 수정한다 → at" / "범위나 조건을 사용한다 → loc"
이렇게 기억하세요! 😎