Pandas에서 데이터를 다룰 때, 우리는 흔히 라벨 기반 접근 (loc, at)을 사용하지만,
정수 인덱스 기반 접근이 필요한 상황도 많습니다.
이때 등장하는 것이 바로 iloc과 iat인데요, 이름도 비슷하고 기능도 유사해 헷갈리기 쉽습니다.
이번 글에서는 iloc과 iat의 차이점과 사용법을 쉽고 명확하게 정리해드립니다!
먼저 핵심 차이 요약
예제 데이터프레임 만들기
import pandas as pd
df = pd.DataFrame({
'이름': ['철수', '영희', '민수'],
'나이': [23, 25, 21],
'점수': [88, 92, 85]
})
print(df)

iloc 사용법
▶ 단일 셀 접근
df.iloc[0, 1] # 0번째 행, 1번째 열 → 23
▶ 여러 행, 열 슬라이싱
df.iloc[0:2, 1:]

▶ 행 전체
df.iloc[1]
이름 영희
나이 25
점수 92
Name: 1, dtype: object
iat 사용법
▶ 단일 셀에 빠르게 접근
df.iat[0, 1] # 0번째 행, 1번째 열 → 23
▶ 값 변경
df.iat[2, 2] = 90
성능 차이 실험 (반복문에서)
import time
# 큰 DataFrame 생성
big_df = pd.DataFrame({'A': range(10000), 'B': range(10000)})
# iloc 접근 시간
start = time.time()
for i in range(10000):
_ = big_df.iloc[i, 1]
print("iloc:", time.time() - start)
# iat 접근 시간
start = time.time()
for i in range(10000):
_ = big_df.iat[i, 1]
print("iat:", time.time() - start)
결과 예시:
iloc: 0.3초
iat: 0.05초 ✅
언제 iloc vs iat?
마무리
- iloc은 범용적이며 직관적인 정수 인덱스 접근 방식
- iat은 단일 셀 접근에 최적화되어 성능 면에서 우수
앞으로 반복문에서 셀 하나하나 다루는 작업을 할 땐, **무조건 iat**을 떠올리세요!
불필요한 성능 저하를 막고, 깔끔한 코드를 작성할 수 있습니다.
'파이썬 > 데이터프레임 다루기' 카테고리의 다른 글
Pandas vs NumPy – 연산 성능 비교, 누가 더 빠를까? (0) | 2025.03.25 |
---|---|
Pandas apply vs map vs applymap – 언제, 어디에 써야 할까? (0) | 2025.03.25 |
Pandas at vs loc – 헷갈리지 말고 정확히 쓰자! (0) | 2025.03.25 |
이터레이터 vs 제너레이터: 파이썬 반복의 핵심 이해하기 (0) | 2025.03.24 |
Pandas groupby 완전 정복: 집계부터 고급 활용까지 (0) | 2025.03.24 |