pandas에서 데이터를 추출할 때 가장 많이 사용하는 loc와 iloc의 핵심 차이는 데이터를 찾는 기준에 있다.
1. loc (Label-based)
loc는 명칭(Label)을 기반으로 데이터를 추출한다. 즉, 눈에 보이는 인덱스 이름과 컬럼 이름을 직접 사용한다.
- 인덱싱 방식: 행 이름, 열 이름을 사용한다.
- 슬라이싱 범위: 시작점과 끝점을 모두 포함한다. (예: 'A':'C'는 A, B, C를 모두 포함)
- 사용 예시: df.loc[0:3, 'name'] (인덱스 이름이 0부터 3인 행의 'name' 컬럼 추출)
2. iloc (Integer position-based)
iloc는 정수 위치(Integer position)를 기반으로 데이터를 추출한다. 파이썬의 리스트 인덱싱과 동일한 방식이다.
- 인덱싱 방식: 0부터 시작하는 행과 열의 순서(번호)를 사용한다.
- 슬라이싱 범위: 시작점은 포함하되 끝점은 포함하지 않는다. (예: 0:3은 0, 1, 2번 인덱스만 포함)
- 사용 예시: df.iloc[0:3, 0] (0번부터 2번 위치까지의 행과 0번째 컬럼 추출)
3. 비교 요약표
| 구분 | loc | iloc |
| 주요 기준 | 레이블(이름) 기반 | 위치(정수 번호) 기반 |
| 슬라이싱 | 끝점 포함 ( [start:stop] → stop 포함 ) | 끝점 제외 ( [start:stop] → stop-1 까지 ) |
| 행 선택 | 인덱스 이름 (예: 'row1', 100) | 행의 순서 (예: 0, 1, 2) |
| 열 선택 | 컬럼 이름 (예: 'age', 'city') | 열의 순서 (예: 0, 1, 2) |
4. 주의사항 (인덱스가 숫자인 경우)
데이터프레임의 인덱스가 정수(0, 1, 2...)로 되어 있을 때 가장 헷갈리기 쉽다.
- df.loc[1]: 인덱스 이름이 1인 데이터를 찾는다.
- df.iloc[1]: 위에서부터 **두 번째(0, 1)**에 위치한 데이터를 찾는다.
만약 데이터 정렬이나 삭제 후에 인덱스 순서가 뒤섞였다면, 두 함수의 결과값은 완전히 달라지게 된다. 따라서 위치 기반으로 확실하게 데이터를 가져오고 싶을 때는 iloc를, 특정 이름을 가진 데이터를 찾을 때는 loc를 사용하는 것이 안전하다.
'IT > Python' 카테고리의 다른 글
| 우분투에서 flet app을 android apk 로 만들기 위한 환경 설정 (0) | 2026.04.26 |
|---|---|
| python으로 만년달력을 만들 때 (0) | 2026.04.12 |
| Tesseract 와 EasyOCR을 비교 : 개인적인 간단 경험 (0) | 2026.04.10 |
| Tesseract 와 EasyOCR을 비교 : 일반적으로 알려져 있는 사항 (0) | 2026.04.09 |
| tabulate 를 사용하여 가장 예쁘게 출력할수있는 방법은? (1) | 2026.04.09 |
| pandas df를 프린트할 때 행열을 예쁘게 잘 맞추어 프린트하는 방법은? (0) | 2026.04.09 |
| pandas df 컬럼의 넓이를 고정하려면? (0) | 2026.04.09 |
| pandas df 의 dimension을 알아보는 방법? (0) | 2026.04.09 |
