본문 바로가기

😀 기초/판다스(Pandas)

4.3 데이터프레임 고급 인덱싱

4.3 데이터프레임 고급 인덱싱

 

1. 데이터프레임 고급 인덱싱

- 데이터프레임에서 특정한 데이터만 골라내는 것을 인덱싱(indexing)이라고 함.
- 앞 절에서는 라벨, 라벨 리스트, 인덱스데이터(정수) 슬라이스의 3가지 인덱싱 값을 사용하여 인덱싱을 하는 방법을 공부
- 근데 Pandas는 numpy 행렬과 같이 쉼표를 사용한(행과 열 인덱스) 형식의 2차원 인덱싱을 지원하기 위해
- 다음과 같은 특별한 인덱서(indexer)속성도 제공한다.
- loc : 라벨값 기반의 2차원 인덱싱
- iloc : 순서를 나타내는 정수 기반의 2차원 인덱싱

 

2. #### loc 인덱서
- loc 인덱서는 다음처럼 사용한다.
- df.loc[행 인덱싱 값]
- 또는
- df.loc[행 인덱싱값, 열 인덱싱값]

 

- 이 때 인덱싱 값은 다음 중 하나이다.
- 행 인덱싱값은 정수 또는 행 인덱스데이터이고 열 인덱싱값은 라벨 문자열이다.
- 인덱스데이터
- 인덱스데이터 슬라이스
- 인덱스데이터 리스트
- 같은 행 인덱스를 가지는 불리언 시리즈(행 인덱싱의 경우)
- 또는 위의 값들을 반환하나는 함수

- 다음과 같은 데이터프레임을 예로 들자.

 

3. #### 인덱싱값을 하나만 받는 경우
- 만약 loc 인덱서를 사용하면서 인덱스를 하나만 넣으면 행(row)을 선택한다.
- 인덱스데이터가 "a"인 행을 고르면 해당하는 행이 시리즈로 출력된다.
- 시리즈라서 상하로 길게 출력되기를 했지만 행을 가져오고 있다.

 

4. #### 인덱싱값을 행과 열 모두 받는 경우

- 인덱싱값을 행과 열 모두 받으려면 df.loc[행 인덱스, 열 인덱스]와 같은 형태로 사용
- 행 인덱스 라벨값이 a, 열 인덱스 라벨값이 A인 위치의 값을 구하는 것은 다음과 같다.

 

5. ### iloc 인덱서

- iloc 인덱서는 loc 인덱서와 반대로 라벨이 아니라
순서를 나타내는 정수(integer) 인덱스만 받는다.
- 다른 사항은 loc 인덱서와 같다.