1. 다중인덱싱 생성
인덱스가 2개일 수도 있을까?
인덱스가 2개인 경우, 다중 인덱싱이 가능하다.
인덱스가 사람이름, 교과목명 2가지인 경우, 다음과 같이 만들 수 있다.
1) DataFrame에서는 생성자에 2개의 인덱스 배열 리스트를 전달한다.
2) Series에서는 튜플을 키 딕셔너리로 전달함.
3) index 와 data가 따로 인경우, Series를 만든 후 reindex한다.
다음과 같이 인덱스를 MultiIndex로 만들어주고, 리인덱싱을 하면 다음과 같이 만들어 지게 된다.
2번째 인덱스가 English인 데이터에 접근하려면 아래와 같이 사용하면 된다.
4) 다중인덱스의 DataFrame만들기
인덱스와 칼럼에 각각 names를 만들어 주면 된다.
2. MultiIndex 메소드
1) unstack( )을 이용해서, Series형 데이터를 DataFrame형의 데이터로 변경할 수 도 있다.
stack( )을 이용하면, df을 Series로 변경한다.
2) 인덱스의 name설정
data.index.names = [ 'a', 'b' ]
인덱스의 이름을 추가할 수 있다.
3. MultiIndex의 인덱싱, 슬라이싱
1) Series에서의 index를 통한 인덱싱
2) Series에서의 index를 이용한 슬라이싱
멀티 인덱스에서 슬라이싱을 하기 위해서는 반드시 정렬이 되어 있어야 한다.
그렇지 않다면 UnsortedIndexError 가 발생한다.
<그냥 슬라이싱>
- 첫번째 인덱스로 슬라이싱
- 두번째 인덱스로 슬라이싱 (첫째칸을 : 으로 설정)
<불린 마스크>
3) DataFrame에서의 인덱싱
- 1차, 2차 인덱스를 사용하여 일부만 인덱싱
- iloc을 이용해서 슬라이싱
4. 정렬
Series MultiIndex에서는 정렬을 하지 않으면 슬라이싱을 사용하지 못한다.
dataframe.sort_index( ) 를 해주자.
data.stack( )
data.unstack( ) 으로 다중 인덱스를 해제하거나 재설정할 수 있다.
data.set_index( ['name', 'name'] ) 으로 원시데이터를 다중인덱스를 가지는 dataframe으로 만들 수 있다.
data.mean( level = 'name' ) 으로 mean, sum, max 등의 집계 메소드를 사용할 수 있다.
'Python > Pandas' 카테고리의 다른 글
pd.groupby / pivot_table (집계연산) (0) | 2020.03.27 |
---|---|
pd.concat / df.append / pd.merge (1) | 2020.03.13 |
13. Pandas - 결측값(Nan, None) (0) | 2020.03.04 |
12. Pandas 정리 - 객체 (Series, DataFrame), 인덱싱 (0) | 2020.02.26 |