2026년 상식닷컴 선정 식당 & 카페 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요

파이썬 pandas의 변수 선택 방법에서 loc과 iloc의 차이는?

_____
Q1: pandas에서 `loc`과 `iloc`란 무엇인가요?
- `loc`는 라벨(label)을 기반으로 행과 열을 선택하는 인덱싱 방법입니다.
- `iloc`는 위치(integer 위치)를 기반으로 행과 열을 선택하는 인덱싱 방법입니다.

Q2: `loc`는 어떤 값을 사용하나요?
- 인덱스 라벨(예: 문자열, 날짜, 정수 라벨 등)을 사용합니다.
- 슬라이싱 시 끝 인덱스가 포함(inclusive)됩니다.

Q3: `iloc`는 어떤 값을 사용하나요?
- 0부터 시작하는 정수 위치를 사용합니다.
- 슬라이싱 시 끝 인덱스를 포함하지 않는 파이썬 기본 슬라이스 규칙(exclusive)입니다.

Q4: 인덱스가 정수형이어도 `loc`과 `iloc`가 다르게 작동하나요?
- 네. 인덱스가 정수형이어도 `loc`은 인덱스 라벨을 기준으로 작동하고, `iloc`은 위치를 기준으로 작동하므로 선택 결과가 다를 수 있습니다.

Q5: 예시를 통해 차이점을 보여주세요.
```python
import pandas as pd

df = pd.DataFrame({
'A': ['a', 'b', 'c', 'd'],
'B': [1, 2, 3, 4]
}, index=[10, 20, 30, 40])

loc: 라벨 기준 선택
print(df.loc[20]) 인덱스 라벨 20의 행 출력 (두 번째 행)

iloc: 위치 기준 선택
print(df.iloc[1]) 위치 1 (두 번째 행) 출력, 결과는 위와 동일
```
위 예시에서는 인덱스 라벨이 10,20,30,40으로 정수형이지만, `loc[20]`은 라벨 20인 행, `iloc[1]`은 두 번째 행을 선택해 결과는 같음.
하지만 슬라이싱에서는 다릅니다:
```python
print(df.loc[10:30]) 라벨 10부터 30까지(포함된) 행 3개 선택
print(df.iloc[0:2]) 위치 0,1의 두 행 선택 (끝 인덱스 미포함)
```

Q6: 슬라이싱 시 `loc`과 `iloc`의 차이점은?
- `loc` 슬라이스는 끝 라벨을 포함(inclusive) 합니다.
- `iloc` 슬라이스는 끝 위치를 포함하지 않음(exclusive) 입니다.

Q7: `loc`과 `iloc`은 열 선택 시에도 차이가 있나요?
- 네, 동일하게 라벨 vs 위치 인덱싱 차이가 적용됩니다. 예를 들어, `df.loc[:, 'A']`는 열 라벨이 'A'인 열을 선택, `df.iloc[:, 0]`는 첫 번째 열을 선택합니다.

Q8: 언제 `loc`을, 언제 `iloc`을 사용해야 하나요?
- 인덱스 또는 컬럼의 라벨을 기준으로 명확히 선택하고 싶을 때는 `loc`을 사용합니다. (예: 날짜 인덱스, 문자열 인덱스)
- 순서 기반 정수 위치로 선택할 때는 `iloc`을 사용합니다.

Q9: 에러 상황은 어떻게 되나요?
- `loc`에 존재하지 않는 라벨을 주면 `KeyError`가 발생합니다.
- `iloc`에 범위를 벗어난 위치 인덱스를 주면 `IndexError`가 발생합니다.

Q10: 정리
| 구분 | loc | iloc |
|------------|-----------------------------|------------------------------|
| 선택 기준 | 인덱스/컬럼 라벨 | 정수 위치 |
| 슬라이싱 | 끝 라벨 포함 (inclusive) | 끝 위치 미포함 (exclusive) |
| 예외 | 존재하지 않는 라벨 → KeyError | 범위 벗어난 위치 → IndexError |
| 용도 | 라벨 기반 직접 선택 | 순서 기반 위치 선택 |
`pandas` 라이브러리에서 `loc`와 `iloc`는 데이터 프레임의 행과 열을 선택하는 데 사용되는 두 가지 메서드입니다.

하지만 이 두 메서드는 인덱싱 방식에서 차이를 보입니다.

`loc` - `loc`는 레이블 기반 인덱싱 을 사용합니다.

즉, 열과 행의 레이블(이름)을 기준으로 데이터를 선택합니다.

- 따라서 행이나 열의 이름을 지정하여 원하는 데이터를 추출할 수 있습니다.

- 사용 예시: ```python import pandas as pd data = { 'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9] } df = pd.DataFrame(data, index=['row1', 'row2', 'row3']) 행 인덱스를 'row1'과 'row2'로 선택하고, 'A'와 'B' 열을 선택 selected_data = df.loc[['row1', 'row2'], ['A', 'B']] ``` `iloc` - `iloc`는 정수 기반 인덱싱 을 사용합니다.

즉, 행과 열의 위치(정수 인덱스)를 기준으로 데이터를 선택합니다.

- 따라서 데이터 프레임의 인덱스나 열의 번호를 사용하여 데이터를 추출할 수 있습니다.

- 사용 예시: ```python import pandas as pd data = { 'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9] } df = pd.DataFrame(data) 첫 번째와 두 번째 행, 첫 번째와 두 번째 열 선택 selected_data = df.iloc[0:2, 0:2] ``` 요약 - `loc`는 레이블 기반, 즉 행과 열의 이름으로 접근합니다.

- `iloc`는 정수 기반, 즉 행과 열의 위치(index)로 접근합니다.

각 메서드를 사용할 때 어떤 방식으로 데이터를 선택할 것인지에 따라 적절한 메서드를 선택해야 합니다.

작성자: 이서빈 [비회원] | 작성일자: 1년 전 2025-02-10 05:31:16
조회수: 201 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.