목차
▶판다스 Index 객체
판다스에서 인덱스는 데이터 프레임의 레코드를 식별할 수 있는 객체다.
타이타닉 탑승자 데이터에서 인덱스 객체를 추출해보자
탑승자 데이터는 위와 같은 형태다.
# 원본 파일 재 로딩
titanic_df = pd.read_csv('titanic_train.csv')
# Index 객체 추출
indexes = titanic_df.index
print(indexes)
# Index 객체를 실제 값 arrray로 변환
print('Index 객체 array값:\n',indexes.values)
출력값은 다음과 같다.
인덱스 객체는 1차원 array로 구성되어 있고 인덱싱도 가능하다. 하지만 값을 출력하는 것만 가능하고 인덱스 객체를 수정하는 것은 불가능하다.
데이터프레임에는 rest_index() 함수를 사용해 숫자 인덱스를 할당할 수 있다.
기존 인덱스는 index라는 칼럼으로 추가된다.
만약 reset_index 함수를 사용할 때 drop이라는 옵션을 True로 설정하면 기존 인덱스가 삭제된다.
데이터 셀렉션 및 필터링
판다스에서 [] 연산자에는 칼럼명, 인덱스로 변환 가능한 표현식만 들어갈 수 있다.
예제를 통해 살펴보자.
print('단일 컬럼 데이터 추출:\n', titanic_df[ 'Pclass' ].head(3))
print('\n여러 컬럼들의 데이터 추출:\n', titanic_df[ ['Survived', 'Pclass'] ].head(3))
print('[ ] 안에 숫자 index는 KeyError 오류 발생:\n', titanic_df[0])
마지막 경우와 같이 [] 연산자 안에 숫자를 넣게 되면 오류가 발생한다.
▶DataFrame iloc[] 연산자
iloc[] 연산자는 위치 기반 인덱싱만 허용하는 연산자다.
위치 기반 인덱싱이란?
0을 출발점으로 하는 가로축, 세로축 좌표 기반의 행과 열 위치를 기반으로 데이터를 지정하는 것이다.
행, 열 값으로 정수가 입력된다.
만약 iloc 연산자를 사용해 데이터프레임의 첫번째 행, 첫번째 열의 데이터를 추출하고 싶다면
df.iloc[0,0]과 같이 사용하면 된다.
▶DataFrame loc[] 연산자
loc[] 연산자는 명칭 기반으로 데이터를 추출하는 연산자다.
행 위치에는 데이터프레임의 인덱스 값을, 열 위치에는 칼럼 명을 입력하면 된다.
loc[]에 슬라이싱을 사용할 때 주의할 점이 한 가지 있다. 보통은 인덱스 범위가 0:2면 0~1까지를 의미하는데 loc[]에서는 0~2까지를 의미한다. 명칭 기반이라 해당 명칭이 숫자가 아닐 수도 있어서 끝값-1을 하지 않는다.
▶불린 인덱싱
불린 인덱싱은 [], loc[]에서 사용할 수 있다. 그런데 iloc[]에서는 정수형만 인덱스 값으로 올 수 있기 때문에 불린 인덱싱이 지원되지 않는다.
예제를 통해 어떻게 사용되는지 살펴보자.
titanic_df = pd.read_csv('titanic_train.csv')
titanic_boolean = titanic_df[titanic_df['Age'] > 60]
titanic_boolean
다음과 같은 방식으로 데이터 프레임에서 나이가 60세 초과인 데이터를 추출할 수 있다.
출처
책 - 파이썬 머신러닝 완벽 가이드
'Study > 머신러닝' 카테고리의 다른 글
[5] 머신러닝 - 판다스 기초(4)와 사이킷런 (0) | 2021.06.01 |
---|---|
[4] 머신러닝 - 판다스 기초(3) (0) | 2021.05.24 |
[2] 머신러닝 - 판다스 기초(1) (0) | 2021.05.11 |
[1] 머신러닝 - numpy 기초 (0) | 2021.05.04 |
[PyTorch] torchvision을 활용한 image transform (0) | 2021.01.31 |