본문으로 건너뛰기

Pandas의 .loc vs .iloc: 예제를 통한 데이터 인덱싱 가이드

Pandas DataFrame에서 라벨 기반 인덱서 .loc와 정수 위치 기반 인덱서 .iloc의 작동 방식 및 주요 차이점을 상세히 설명한다.

섹션별 상세

데이터 선택 시 라벨과 위치 중 무엇을 기준으로 할지에 따라 메서드가 달라진다. .loc는 실제 인덱스 이름이나 컬럼명을 입력으로 받아 데이터를 추출하며, .iloc는 데이터의 물리적 순서인 정수 인덱스를 사용한다. .loc['2025-01-01']처럼 날짜 라벨로 접근하는 것과 .iloc[0]처럼 첫 번째 행으로 접근하는 방식의 차이다. 이는 데이터 구조에 따라 적절한 인덱싱 전략을 선택하는 기초가 된다.
python
import pandas as pd
import numpy as np

dates = pd.date_range(start="2025-01-01", periods=40)
df = pd.DataFrame({"value": np.arange(40)}, index=dates)

# .loc: 라벨 기반 슬라이싱 (끝점 포함)
print(df.loc["2025-01-01":"2025-01-02"])

# .iloc: 위치 기반 슬라이싱 (끝점 제외)
print(df.iloc[0:2])

.loc와 .iloc의 슬라이싱 범위 포함 여부 차이를 보여주는 예시

.loc와 .iloc의 핵심 차이점을 요약한 다이어그램
Diagram.loc는 라벨 기반(Label based)이며 행/열 라벨을 사용하고, .iloc는 인덱스 기반(Index based)이며 행/열 인덱스(정수 위치)를 사용함을 시각적으로 대조한다. 두 메서드의 입력값 유형 차이를 한눈에 파악할 수 있게 돕는다.
근거
  • .iloc는 정수 위치 기반 인덱싱을 수행하며 슬라이싱 시 끝점 위치를 제외한다. Using .iloc: Integer-Based Indexing Explained 섹션 및 Slicing Rows Using .iloc 섹션
슬라이싱 연산에서 두 메서드는 서로 다른 종료 지점 처리 규칙을 가진다. .loc[start:stop]은 stop 라벨을 포함하는 반면, .iloc[start:stop]은 표준 파이썬 슬라이싱처럼 stop 위치를 제외한다. 예를 들어 .loc['A':'C']는 C를 포함하지만 .iloc[0:2]는 인덱스 2를 제외한 0, 1만 반환한다. 이러한 차이를 인지하지 못하면 데이터 추출 시 '하나 차이(off-by-one)' 오류가 발생하기 쉽다.
python
# 조건부 필터링과 열 선택 결합
# 나이가 30보다 큰 행의 'Name'부터 'Region'까지 열 추출
result = df.loc[df['Age'] > 30, 'Name':'Region']

.loc를 사용하여 조건부 필터링과 특정 열 범위를 동시에 선택하는 방법

근거
  • .loc는 라벨 기반 인덱싱을 수행하며 슬라이싱 시 끝점 라벨을 포함한다. Understanding .loc and .iloc in Pandas DataFrames 섹션 및 Slicing Rows Using .loc 섹션
조건부 필터링은 주로 .loc를 통해 직관적으로 수행된다. df.loc[df['Age'] > 30]과 같이 불리언 배열을 전달하여 특정 조건을 만족하는 행을 선택할 수 있다. .iloc에서도 불리언 마스킹이 가능하지만 위치 기반이라는 특성상 라벨 기반인 .loc보다 가독성이 떨어지고 실수 가능성이 높다. 따라서 복잡한 데이터 필터링 작업에는 .loc 사용이 강력히 권장된다.
행과 열을 동시에 선택할 때 두 인덱서 모두 콤마(,)를 사용한 2차원 인덱싱을 지원한다. df.loc[행_라벨, 열_라벨] 또는 df.iloc[행_위치, 열_위치] 형식을 사용하여 특정 셀이나 서브셋을 추출한다. .loc는 'Name':'Age'와 같은 컬럼명 슬라이싱이 가능하여 코드의 의도를 명확히 전달할 수 있다. 반면 .iloc는 컬럼의 순서가 바뀌면 결과가 달라질 위험이 있으므로 주의가 필요하다.

용어 해설

판다스(Pandas)
파이썬에서 데이터 조작과 분석을 위해 널리 사용되는 오픈소스 라이브러리이다. DataFrame이라는 표 형태의 데이터 구조를 제공하여 대규모 데이터를 효율적으로 처리할 수 있게 한다. 데이터 과학 및 머신러닝 전처리 단계에서 필수적인 도구이다.
데이터프레임(DataFrame)
행(row)과 열(column)로 구성된 2차원 레이블 데이터 구조이다. 스프레드시트나 SQL 테이블과 유사한 형태를 가지며 다양한 타입의 데이터를 담을 수 있다. 판다스에서 데이터를 다루는 가장 기본적인 단위이다.
라벨 기반 인덱싱(Label-based Indexing)
데이터의 실제 이름(라벨)을 사용하여 특정 행이나 열을 참조하는 방식이다. 인덱스가 문자열이나 날짜인 경우 해당 값을 직접 입력하여 데이터를 찾는다. 코드의 가독성이 높고 데이터 순서가 바뀌어도 안전하다.
정수 위치 기반 인덱싱(Integer Position-based Indexing)
데이터가 저장된 물리적 순서(0, 1, 2...)를 기준으로 데이터를 참조하는 방식이다. 파이썬 리스트의 인덱싱과 동일한 논리를 따르며 데이터의 이름과 상관없이 위치로만 접근한다. 반복문이나 순차적 처리에 유용하다.

기술

  • Pandas
  • Python
  • NumPy

활용 사례

  • 데이터프레임 특정 행/열 추출
  • 조건부 데이터 필터링
  • 데이터 전처리 및 슬라이싱
AI 분석 전체 내용 보기

AI 요약 · 북마크 · 개인 피드 설정 — 무료

출처 · 인용 안내

원문 발행 2026. 03. 30.수집 2026. 03. 30.출처 타입 RSS

인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.