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"
이렇게 기억하세요! 😎
'파이썬 > 데이터프레임 다루기' 카테고리의 다른 글
Pandas apply vs map vs applymap – 언제, 어디에 써야 할까? (0) | 2025.03.25 |
---|---|
Pandas iloc vs iat – 정수 인덱스로 DataFrame 다루기 (0) | 2025.03.25 |
이터레이터 vs 제너레이터: 파이썬 반복의 핵심 이해하기 (0) | 2025.03.24 |
Pandas groupby 완전 정복: 집계부터 고급 활용까지 (0) | 2025.03.24 |
Pandas pivot_table() 완전 정복 (0) | 2025.03.24 |