판다스에서 인덱스는 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 넘파이 정렬 내림차순까지 간단히 정리
'Data Science' 카테고리의 다른 글
[Pandas] 판다스 정렬 sort_values groupby (0) | 2022.08.17 |
---|---|
[Pandas] 판다스 loc iloc 원하는 행 열만 선택하기 with 위치 기반, 명칭 기반 인덱싱의 이해 (0) | 2022.08.16 |
[Pandas] Column 열 생성 및 삭제 (0) | 2022.08.15 |
[Pandas] 넘파이 리스트 딕셔너리 판다스 변환 (0) | 2022.08.15 |
[Pandas] 판다스 데이터프레임 기초 with 캐글 타이타닉 파일 (0) | 2022.08.07 |
댓글