판다스 데이터프레임 행열 인덱싱 슬라이싱

판다스 공부 03. 데이터프레임 행열 인덱싱(Indexing) 슬라이싱(Slicing)

판다스 데이터프레임 행열 인덱싱 슬라이싱

판다스 공부 03. 데이터프레임 행열 인덱싱 슬라이싱. 데이터프레임 자료형에서 인덱싱(indexing)은 특정 행이나 열을 선택하여 추출하는 것이고, 슬라이싱(Slicing)은 연속적인 행이나 열을 선택하여 추출하는 것이다. 행열 인덱싱과 슬라이싱은 자료형을 다루는 가장 기본이므로 이 포스트에서 자세히 배우고 넘어가도록 하겠다.


판다스 데이터프레임
행과 열 인덱싱

보통 열은 이름이 정해져 있으므로 열을 인덱싱할 때는 객체[열 이름]을 입력하면 된다. 반면 행은 인덱스 이름과 인덱스 번호가 있기 때문에 인덱싱하는 방법은 두 가지다. 첫 번째 방법은 인덱스 이름을 기반으로 추출하는 것으로 객체.loc 속성을 사용한다. 두 번째 방법은 인덱스 번호를 기반으로 추출하는 것으로 객체.iloc 속성을 이용한다. 두 가지 방법 모두 알아보겠다.

데이터프레임 인덱싱 예시
데이터프레임 인덱싱 예시 실행 결과

연습을 위해 위 코드를 입력해 학교성적과 관련된 데이터프레임 자료형을 만들고 실행한다. 열 이름은 [ ‘국어’, ‘영어’, ‘수학’ ]이고 행 인덱스 이름은 [ ‘연진’, ‘재준’, ‘사라’ ]다. 더 글로리를 참고했다.

데이터프레임 행열 인덱싱 예시

먼저 ‘국어’열을 인덱싱하고 프린트로 출력한다.
print( df[ ‘국어’ ] )
print( ‘-‘ * 80 )

다음으로 행을 인덱싱하고 출력한다. 먼저 행 인덱스 이름으로 인덱싱 & 출력하고,
print( df.loc[ ‘사라’ ] )
print( ‘-‘ * 80 )


행 인덱스 번호로도 인덱싱 & 출력한다.
print( df.iloc[ 2 ] )
print( ‘-‘ * 80 )

행열 인덱싱 실행 결과

행 인덱스 이름 ‘사라’와 인덱스 번호 2는 동일한 값이므로, 코드를 실행하면 위와 같은 결과를 얻을 수 있다.


판다스 데이터프레임
행과 열 슬라이싱

열의 단독으로 슬라이싱은 할 수 없다. 대신 순서와 상관없이 여러 열을 선택할 수 있는데 방법은 리스트 자료형처럼 쉼표로 구분해 나열하면 된다. 객체[ [ 열 이름1, 열 이름2, … ] ] 이렇게 (참고로 행도 동일한 방법으로 순서와 상관 없이 선택할 수 있다).

행은 기존에 우리가 아는 방법 [ 시작 : 끝 : 간격 ]으로 슬라이싱 할 수 있다. 행 이름으로 슬라이싱할경우 객체.loc 속성을, 행 인덱스 번호로 슬라이싱할 경우 객체.iloc 속성을 사용한다.

데이터프레임 행열 슬라이싱

데이터프레임 자료형에서 행 ‘국어’와 ‘영어’를 선택한다.
print( df[ ‘국어’, ‘영어’] )
print( ‘-‘ * 20 )

데이터프레임 자료형에서 열 ‘재준’부터 ‘사라’까지 슬라이싱 한다.
print( df.loc[ ‘재준’ : ‘사라’ ] )

데이터프레임 행열 슬라이싱 예시

코드를 실행하면 위 결과를 얻을 수 있다.


판다스 데이터프레임
행열 동시에 인덱싱 슬라이싱

행과 열을 동시에 인덱싱 슬라이싱할 수 있다. 행 인덱싱 슬라이싱 방법 객체.loc[ ‘행이름’, ‘열이름 ]에 쉼표를 붙여 열을 지정하는 방식이므로 쉽게 이해할 수 있을 것이다.

행열 인덱싱 예시

loc 속성을 사용해 행 이름 ‘연진’에 열 이름 ‘국어’를 추출한다.
print( df.loc[ ‘연진’, ‘국어’ ] )
print( ‘-‘ * 20 )


iloc 속성을 사용해 행 인덱스 0번에 열 인덱스 0번을 추출한다.
print( df.iloc[ 0, 0 ] )
print( ‘-‘ * 20 )


만약 여러 행 또는 여러 열을 선택하고 싶다면 대괄호를 더 사용하면 된다. 예를 들어 행 인덱스 0번에 열 인덱스 0번과 2번을 추출하려면 다음과 같이 코드를 작성하면 된다.
print( df.iloc[ 0, [ 0, 2 ] ] )

행열 인덱싱 예시

코드 실행 결과는 위와 같다.

행열 슬라이싱

슬라이싱할 때는 굳이 대괄호를 추가로 사용할 필요는 없다. 단순히 객체.loc[ 행 슬라이싱, 열 슬라이싱 ]으로 구분해 주면 된다. 행은 ‘연진’부터 ‘재준’까지, 열 ‘국어’부터 ‘영어’까지 데이터프레임을 슬라이싱한다.
print( df.loc[ ‘연진’ : ‘재준’ , ‘국어’ : ‘영어’ ]

행열 슬라이싱 예시

코드를 실행하면 위와 같이 행열을 동시에 슬라이싱할 수 있다.


추천 포스트

판다스 기본 자료형 시리즈와 데이터프레임
링크: https://k-man.kr/3289

행 인덱스 열 이름 변경 수정
링크: https://k-man.kr/3341


Comments

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

error: Content is protected !!