[Pandas] 인덱싱 – loc vs iloc

2025. 4. 24. 10:11·python/Pandas | Numpy
728x90

데이터를 다루는 데 있어 가장 기본이자 가장 중요한 작업은 필요한 데이터를 정확히 뽑아오는 것 입니다.

Pandas에서는 이를 위해 loc 와 iloc 두 가지 인덱싱 방법을 제공하는데,

이 둘은 비슷해 보이지만 동작 방식과 개념이 완전히 다르다.

 

구분 loc iloc
기준 라벨(Label) 기반 위치(Position) 기반
인덱스 숫자일 수도 있고 문자일수도 있음 무조건 0부터 시작하는 정수 위치 사용
사용법 df.loc[행 라벨, 열 라벨] df.iloc[행 번호, 열 번호]

예제 DataFrame

import pandas as pd

df = pd.DataFrame({
    'name': ['Alice', 'Bob', 'Charlie'],
    'age': [25, 30, 35],
    'score': [88, 92, 85]
}, index=['u1', 'u2', 'u3'])

df


loc – 라벨(Label) 기반 인덱싱

  • 특정 행/열 접근
df.loc['u1', 'name']  # → 'Alice'

 

  • 여러 열 선택
df.loc['u1', ['name', 'score']]

 

  • 여러 행, 여러 열 슬라이싱
df.loc[['u1', 'u3'], ['name', 'score']]

 

  • 전체 행에서 특정 열만
df.loc[:, 'score']

iloc – 위치(Position) 기반 인덱싱

  • 특정 위치의 값 가져오기
df.iloc[0, 0]  # → 'Alice'

 

  • 위치로 행/열 선택
df.iloc[0, [0, 2]]  # 첫 번째 행에서 첫 번째와 세 번째 열

 

  • 행 슬라이싱
df.iloc[1:3]  # 두 번째부터 세 번째 행까지

 

  • 열 슬라이싱
df.iloc[:, 1:]  # 모든 행, 두 번째 열부터 끝까지

 

 

여기서 자주 하는 실수 중에 하나가

loc와 iloc 혼용하는 경우가 있으니 주의하시기 바랍니다.

  • loc은 항상 라벨을 보고, iloc은 항상 0부터 시작하는 번호를 본다.

사용 예제

1: 조건에 맞는 사용자 이름만 가져오기

df[df['score'] > 90].loc[:, 'name']

 

2: 상위 2명 이름과 점수만 보기

df.iloc[:2, [0, 2]]

 

 

인덱싱은 Pandas에서 데이터 추출, 수정, 분석의 가장 기초가 되는 기능이다.
loc과 iloc을 정확히 구분해서 써야 예상치 못한 오류나 잘못된 분석 결과를 방지할 수 있다.

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'python > Pandas | Numpy' 카테고리의 다른 글

[Pandas] 데이터 타입 확인 및 변환 – dtypes, astype()  (0) 2025.04.24
[Pandas] 결측치(NaN) 처리  (0) 2025.04.24
[Pandas] 정렬과 순위 매기기 – sort_values, rank  (0) 2025.04.24
[Pandas] Boolean Indexing (조건 필터링)  (0) 2025.04.24
[Pandas] Series와 DataFrame  (0) 2025.04.24
'python/Pandas | Numpy' 카테고리의 다른 글
  • [Pandas] 결측치(NaN) 처리
  • [Pandas] 정렬과 순위 매기기 – sort_values, rank
  • [Pandas] Boolean Indexing (조건 필터링)
  • [Pandas] Series와 DataFrame
Balang
Balang
음악 전공생의 개발일지
  • Balang
    Balang
    Balang
  • 전체
    오늘
    어제
  • 반응형
    • All Post (160)
      • python (47)
        • selenium (4)
        • algorithm (10)
        • Django (6)
        • Pandas | Numpy (22)
      • SQL (9)
      • Data Engineer (36)
      • Data Scientist (3)
      • Data Analysis (11)
      • Computer Science (36)
      • Why? (16)
      • 마음가짐 (2)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
Balang
[Pandas] 인덱싱 – loc vs iloc
상단으로

티스토리툴바