본문 바로가기
머신러닝

[Pandas] Index 객체와 데이터 셀렉션 및 필터링

by 수픽 2021. 5. 19.

≫ Index 객체

RDBMS의 Primary Key와 같이 DataFrame, Series의 레코드를 고유하게 식별하는 객체이다.

DataFrame.index, Series.index 속성을 통해 추출이 가능하다. 

titanic_df 데이터프레임에서 인덱스 객체를 추출해보자.

index 객체 추출

한 번 만들어진 Index 객체는 indexs[0] = 5 처럼 변경할 수 없으니 주의해야 한다.

Series 객체에서 Index 객체는 연산에서 제외되고 오직 식별용으로만 사용된다.

 

reset_index() 메서드를 수행하면 연속 int 숫자형 데이터로 만들 수 있다.

단, Series에 적용하면 기존 인덱스가 칼럼으로 추가되고, 칼럼이 2개가 되어 DataFrame이 반환된다.

파라미터 중 drop=True을 설정하면 기존 인덱스는 새로운 칼럼으로 추가되지 않고 드롭되어 Series를 유지할 수 있다.

reset_index

 

데이터 셀렉션 및 필터링


넘파이의 경우, [ ] 연산자 내 단일 값 추출, 슬라이싱, 팬시 인덱싱, 불린 인텍싱

판다스의 경우 ix[ ], iloc[ ], loc[ ] 연산자

* DataFrame과 Seires끼리도 달라지는 기능이 있음. 여기서는 DataFrame 기준 (명칭 기반 인덱싱)

 

≫ [ ] 연산자

판다스에서 [ ] 연산자는 칼럼만 지정할 수 있는 칼럼 지정 연산자이다.

칼럼명을 지정하지 않고 titanic_df['0'] 같이 리스트 객체를 이용하면 오류가 발생한다.

인덱스 형태로 변환 가능한 titanic_df[0:2]이나 불린 인덱싱 titanic_df[titanic_df['Pclass'] == 3].head(3)가능하다.

[ ] 연산자

 

≫ ix[ ] 연산자

넘파이 ndarray의 [ ] 연산자와 유사한 기능을 제공한다. 

위치 기반 인덱싱명칭 기반 인덱싱을 모두 적용할 수 있다.

ix[ 0 , 'Pclass']와 같이 인덱스값, 칼럼 명/칼럼 위치 값을 입력해 원하는 위치의 데이터를 추출할 수 있다.

칼럼 명으로 지정하는 처리 방식은 칼럼 명칭 기반 인덱싱, 후자의 경우 칼럼 위치 기반 인덱싱이다.

두 가지 모두 제공하면서 코드 혼란 때문에 사라짐!

 

≫ iloc[ ] 연산자

위치 기반 인덱싱으로, 행과 열 값으로 정수가 입력된다.

integer, integer형의 슬라이싱, 팬시 리스트 값을 입력해줘야 한다. 불린 인덱싱은 제공하지 않는다.

데이터프레임.iloc[0,0]의 형태로 추출한다.

 

≫ loc[ ] 연산자

명칭 기반 인덱싱으로, 인덱스나 칼럼의 명칭을 기반으로 위치를 지정하는 방식이다.

슬라이싱을 '시작점:종료점'으로 지정할 때, 종료 값 -1이 아닌 종료 값까지 포함하는 것에 주의하자.

데이터프레임.loc['인덱스값, '칼럼 명']의 형태로 추출한다.

 

≫ 불린 인덱싱

[ ], ix[ ], loc[ ]에서 공통으로 지원

개별 조건은 ()로 묶고, 복합 조건 연산자를 사용하면 된다.

  1. and 조건 : &
  2. or 조건 : |
  3. not 조건 : ~