BackEnd/파이썬

🐼 Pandas의 iloc vs loc 완벽 정리: 실무 예제로 이해하기

bobo12 2025. 6. 7. 12:45
728x90

데이터 분석이나 머신러닝을 하다 보면 pandas의 iloc과 loc을 자주 마주치게 됩니다.

하지만 처음에는 이 두 개념이 헷갈릴 수 있습니다. 이 글에서는 차이점과 사용법을 실전 예제 중심으로 정리해볼게요!

 

✅ iloc vs loc 차이 한눈에 보기

항목 iloc loc

항목 iloc loc
의미 index-location label-location
기준 정수 인덱스 레이블(이름)
사용 방식 위치 기반 이름 기반
슬라이싱 끝 포함 여부 포함하지 않음 포함함

 

 

📌 예제 데이터프레임 생성

import pandas as pd

df = pd.DataFrame({
    '이름': ['철수', '영희', '민수'],
    '나이': [23, 25, 21],
    '성별': ['남', '여', '남']
}, index=['a', 'b', 'c'])

 

 

🔹 iloc 사용법 (정수 기반 인덱싱)

▶ 행 선택

df.iloc[0]          # 첫 번째 행 (Series)
df.iloc[[0, 2]]     # 0번, 2번 행 (DataFrame)
df.iloc[0:2]        # 0 ~ 1번 행 (슬라이싱)

 

▶ 열 선택

df.iloc[:, 0]       # 첫 번째 열
df.iloc[:, [0, 2]]  # 첫 번째, 세 번째 열

 

▶ 특정 값 선택

df.iloc[1, 2]       # 1번 행, 2번 열 => '여'

 

 

🔸 loc 사용법 (레이블 기반 인덱싱)

▶ 행 선택

df.loc['a']             # 'a' 라벨을 가진 행
df.loc[['a', 'c']]      # 'a', 'c' 라벨 행

 

▶ 열 선택

df.loc[:, '이름']              # '이름' 열
df.loc[:, ['이름', '성별']]     # 여러 열 선택

 

▶ 특정 값 선택

df.loc['b', '성별']      # 'b'행, '성별' 열 => '여'

 

 

🧠 실무 꿀팁: 자주 쓰는 패턴

# 조건에 따라 필터링 후 컬럼 선택
df[df['성별'] == '남'].loc[:, '이름']

# iloc으로 마지막 행 선택
df.iloc[-1]

# 여러 열만 선택
df.loc[:, ['이름', '나이']]

 

 

🚨 주의할 점

  • iloc에는 정수만 사용 가능, loc에는 레이블만 사용 가능
  • 슬라이싱할 때 iloc은 끝 미포함, loc은 끝 포함
  • 잘못된 타입을 쓰면 KeyError, IndexError 발생

 

📚 마무리

  • 인덱스를 모를 때 : loc
  • 위치로 처리하고 싶을 때 : iloc
  • 리스트 슬라이싱처럼 쓰고 싶을 때 : iloc

 

iloc과 loc은 pandas의 기초이자 핵심입니다.

헷갈릴 땐 iloc은 숫자, loc은 이름만 기억하세요!

728x90