인공지능을 위한 파이썬 라이브러리 6-3[完]
판다스 심화 : 멀티 인덱스와 복합 인덱스
멀티 인덱스란
하나 이상의 인덱스를 사용하여 데이터프레임과 행과 열을 구조화 하는 방법이다.
이는 다차원 데이터를 보다 효율적으로 관리하고 분석할수 있게 해준다.
set_index()로 멀티 인덱스 설정

인덱스로 도시와 년도가 설정되어서 데이터가 구조화 된걸 확인할수있다.
pd.MultiIndex.from_tuples() 로 멀티 인덱스 생성
from_tuples()을 사용해 튜플로 구성된 멀티 인덱스를 생성할 수도 있다.

MultiIndex - 이코드는 멀티인덱스 객체를 생성하는 부분
from.tuples - 멀티인덱스를 구성할 튜플의 리스트를 받아서 멀티인덱스 객체를 반환해주는 작업
MultiIndex를 사용하면 복잡한 데이터를 좀더 직관적인 데이터로 변환할수있다.
멀티 인덱스 데이터 접근하기
loc()를 사용한 데이터 접근
loc()를 사용해 멀티 인덱스에서 특정 데이터를 선택할수있다.

하위 레벨까지 지정하여 데이터를 더 구체적으로 접근하는것도 가능하다.
슬라이싱으로 데이터 접근
멀티 인덱스는 슬라이싱을 통해 특정 구간의 데이터를 쉽게 선택 할수있다.

xs()를 사용한 멀티 인덱스 교차 선택
xs() 는 특정 레벨에서 데이터를 선택하거나 , 레벨을 넘어서 데이터를 선택할때 유용하다.
레벨을 넘는다는건 선택한 레벨을 제거하고 나머지 데이터만 반환한다는 뜻이다.

복합 인덱스 활용
인덱스 정렬 및 정렬된 상태 확인
멀티 인덱스를 사용한 데이터프레임은 정렬된 상태로 관리하는것이 일반적이며,
sort.index()로 인덱스를 정렬할수있다. (슬라이싱 데이터 접근 부분에서 사용했다.)
unstack()과 stack()으로 인덱스 변환
unstack()은 멀티 인덱스를 열로 변환하며 , 반대로 stack()은 열을 인덱스를 변환한다.

멀티 인덱스의 응용
그룹화와 함께 사용
멀티 인덱스는 그룹화와 함께 사용할때 더 강력해진다.
그룹화한 데이터를 멀티인덱스로 변환하여 복잡한 분석을 수행 할수 있다.

판다스 심화 : 데이터프레임 구조화 다시하기와 크기 조정하기
데이터프레임 구조화 다시하기
데이터프레임의 구조를 재조정하여 , 데이터를 원하는 형태로 변형 할수 있다.
pivot()을 사용한 피벗 테이블 생성
pivot() 함수는 열 데이터를 행 또는 열로 이동시켜 새로운 데이터프레임을 만든다.
이는 데이터를 재구성하고 분석하는데 매우 유용하다.

새로운 데이터 프레임을 만드는데 피벗기능을 이용할수있고,
하나의 테이블을 새로운 서브테이블을 만들고 싶을때 그 테이블이 의미가있을때 유용하게 사용가능하다.
melt() 를 사용한 데이터 구조 해체
melt() 함수는 피벗된 데이터를 다시 긴 형식으로 변환할때 사용된다.
이는 여러 열을 하나의 열로 통합하는데 유용하다.

id_vars = 식별자 변수 이 열들은 변환 과정에서 그대로 사용된다.
value_vars = 값으로 녹여낼 열들을 지정한다.
value_name = 값으로 들어간 열의 이름을 설정한다.
unstack()과 stack()을 사용한 데이터 변환
stack()은 열 데이터를 인덱스 하위 레벨로 이동시키고 , unstack()은 그 반대로 작업을 수행한다.
이는 멀티 플렉스 데이터 프레임에서 유용하다.

이와 같이 도시레벨을 인덱스로 스택하게 되면 도시가 인덱스로 변환된걸 확인 할수있다.

unstack()을 사용하여 , 원래 구조로 복원시도 하였고 , 결과는 원래의 피벗 테이블 형태로 돌아왔다.
중복된 인덱스가 있는 경우 unstack()사용시 에러가 발생할수있다.
데이터프레임 크기 조정하기
데이터프레임의 크기를 조정하는 방법에는 행과 열의 추가 , 삭제 , 데이터 병합등이 있다.
이를 통해 데이터를 분석하기에 적합한 형태로 조정 할수 있다.
행과 열 추가 하기
새로운 열을 추가 할때는 새로운 데이터를 할당하면 된다.
예를 들어 df[새로운열이름] = 값의 형태로 추가할수있다.

행과 열 삭제 하기
행과 열 삭제는 drop() 함수를 사용하며 , axis=0은 행을 , axis=1은 열을 삭제한다.

'나의개발일지(TIL)' 카테고리의 다른 글
| [스파르타 내일배움캠프]9일차 -머신러닝 (0) | 2024.10.15 |
|---|---|
| [스파르타 내일배움캠프]8일차 -머신러닝 (0) | 2024.10.14 |
| [스파르타 내일배움캠프]6일차 -파이썬 라이브러리 (0) | 2024.10.10 |
| [스파르타 내일배움캠프]5일차 -파이썬 라이브러리 (2) | 2024.10.07 |
| [스파르타 내일배움캠프]4일차 -파이썬 라이브러리 (0) | 2024.10.04 |