판다스 공부 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
답글 남기기