본문 바로가기
Data Science

[Pandas] 판다스 인덱스 초기화 재정렬

by Lora Baek 2022. 8. 16.
300x250

판다스에서 인덱스는 RDBMS의 PK(Primary Key)와 유사하다.

데이터프레임과 시리즈의 레코드를 고유하게 식별할 수 있는 객체가 Index 객체이다.

 

데이터프레임을 생성할 때, 만일 인덱스를 특정 값으로 지정해주고 싶다면?

pd.Dataframe(데이터, index=['a','b','c']) 와 같은 형태로 원하는 특정 값을 지정해줄 수도 있다.

 

이런 Index만 추출하기 위해서는

DataFrame.index 혹은 Series.index 속성을 이용해서 그 결과를 넘파이 1차원 배열(ndarray)로 확인할 수 있다.

index객체의 values 속성을 이용해서 모든 인덱스를확인해볼 수 있다.(너무 길어서 조금 잘랐다)

 

type과 shape로 1차원 배열임을 확인할 수 있다. 단일 값이나 슬라이싱도 가능하다.

하지만 아래의 오른쪽 사진처럼 index객체를 변경하는 작업은 불가능하다.

 

그리고 또 하나 유의할 점이, Series 객체는 Index 객체를 포함하지만 시리즈별로 연산 함수를 적용할 때 Index는 함께 계산되지는 않는다. 즉, 각 레코드를 식별하는 용도로만 사용된다는 점을 꼭 기억하자.

 

데이터프레임명.reset_index(inplace=False) 를 이용하면

새롭게 연속된 숫자를 인덱스로 만들 수 있다. 기존의 인덱스는 index라는 새 칼럼 명으로 추가된다.

인덱스가 int 숫자형이 아닌데 이를 0부터 차례대로 인덱싱해서 고유 식별자로 사용하고 싶을 때 쓸 수 있는 방법이다.

 

만일 Series에 reset_index를 적용하면 기존의 인덱스가 칼럼으로 추가되므로 칼럼이 2개가 된다는 점을 유의해야 한다. 즉 시리즈가 아닌 데이터프레임이 되는 것이다. 타이타닉 데이터의 Pclass 칼럼만을 선택해서 각 값이 몇 개씩 있는지 Series형태로 확인했었는데, 이를 reset_index를 이용하면 데이터프레임으로 변경된 것을 확인할 수 있다.  

만약 reset_index 내의 인자를 drop=True로 설정하면 기존 인덱스가 새 칼럼으로 추가되지 앉고 삭제된다. 타입도 그대로 시리즈로 유지된다. (inplace=True로 설정해주면 되지 않나? 싶을 수도 있지만, Typeerror 메세지와 함께 데이터프레임이 아닌 시리즈에서는 설정 불가한 인수라는 에러 메시지가 뜬다)

 

 

판다스 기본 개념 정리하기

2022.08.07 - [Data Science] - [Pandas] 판다스 데이터프레임 기초 with 캐글 타이타닉 파일

2022.08.15 - [Data Science] - [Pandas] 넘파이 리스트 딕셔너리 판다스 변환

2022.08.15 - [Data Science] - [Pandas] Column 열 생성 및 삭제

 


 

넘파이 (numpy) 기초에 대한 공부가 필요하다면 아래 링크들을 참고 부탁드린다.

 

차근차근 넘파이 개념 정리하기

2022.08.02 - [Data Science] - [Numpy] 넘파이 설치+차원 확인+데이터 타입 확인 및 변경

2022.08.02 - [Data Science] - [Numpy] 넘파이 배열 생성 arange range 차이+파이썬 빈 배열 만들기

2022.08.03 - [Data Science] - [Numpy] 넘파이 reshape 차원 추가 축소 변경하기

2022.08.04 - [Data Science] - [Numpy] 넘파이 인덱싱 슬라이싱 팬시인덱싱 등으로 인덱스 반환하기 +찾기

2022.08.05 - [Data Science] - [Numpy] argsort 넘파이 정렬 내림차순까지 간단히 정리

댓글