[판다스] 정돈을 위한 메서드

밍키·2021년 1월 20일
0

1. pandas의 정돈을 위한 메서드


  • 구조를 바꾸는 메서드
    - stack()
    • unstack()
    • melt()
    • pivot()
    • pivot_table()
  • 텍스트 분해를 위한 str accessor
  • 정돈된 데이터를 다듬는 메서드
    - rename()
    • rename_axis()
    • reset_index()
    • set_index()

2. stack


2.1 stack()


  • 기본 개념
    - 칼럼 이름을 index(행 이름)으로 전환한다.
    + 기존 index가 있으면 하위 레벨로 들어간다.(기존 것이 상위 레벨)

    • 컬럼 이름을 컬럼의 값으로 전치시킬 때도 사용할 수 있다.
  • 구문
    - df.stack()

  • 매개변수
    - dropna=False : stacking시, 생성되는 NA(결측치)는 제거되지 않게 한다.
    + default : True => 제거

      

2.2 예제

# 위의 데이터 프레임은 관측치를 제대로 파악하기가 어렵다.

# stack으로 변경해준다.
s1 = state_fruit.stack()
s1

# 인덱스 제거
s2 = s1.reset_index()
s2
# 멀티 인덱스일 때, 가장 바깥 쪽 컬럼 레벨은 0, 다음 레벨 1, 다음 레벨 2, ...
# 안으로 들어 갈수록 레벨이 올라간다.

# 축에 이름주기
print(type(state_fruit.stack().rename_axis(['state','fruit'])))

# 이름 다 바꿔주기
s2.columns = ['state', 'fruits', 'stack']
s2

# 시리즈 value의 컬럼명을 지정해주기
state_fruit.stack().rename_axis(['state','fruit']).reset_index(name='stock')

3. unstack


3.1 unstack()


  • 기본 개념
    - stack()의 반대로 index를 컬럼으로 변환한다.

  • 구문
    - df.unstack()

  • 매개변수
    - level
    + multi-index일 경우, 컬럼으로 만들 레벨을 지정한다.
    + 기본값은 -1로 가장 안쪽의 index를 이동시킨다.

3.2 예제


# 스택의 반대

s3 = s2.set_index(['state','fruits'])
s3

s3.unstack()

# state가 올라간다.
s3.unstack(level=0)

# 컬럼 삭제
# df.droplevel()
# 멀티 인덱스인 인덱스나 컬럼 중 하나의 레벨을 삭제
# 멀티 인덱스인 인덱스만 삭제 가능.
# 삭제할 레벨 알려줘야 한다.
# 삭제할 축을 지정해줘야 한다.
s3.unstack(level=0).droplevel(level=0,axis=1) # 위에 stack이 삭제된다.

4. melt


4.1 melt()


  • 기본 개념
    - stack()과 같이 컬럼 이름을 단일 컬럼의 값으로 변환한다.
    • 변환할 컬럼들을 지정할 수 있어, stack()보다 더 유연하다.
  • 구문
    - df.melt()

  • 매개변수
    - id_vars
    + 값으로 변환하지 않고 그대로 유지하고자 하는 컬럼 이름(열이름)들의 리스트.
    + 식별변수라고도 한다.
    + 지정한 변수(컬럼)은 같은 열에 남게 되지만, value_vars에 전달된 각 열에 대해 반복적으로 나타난다.

    	- value_vars

    + value_vars에 지정한 컬럼이 value가 되고, 그 컬럼의 값들은 다른 컬럼으로 생성된다.
    + id_vars와 value_vars에 지정 안 된 컬럼은 제거된다.
    + 제거되지 않고 단독 컬럼으로 유지되길 바라는 컬럼은 id_vars로 지정된다.

    • var_name
      • value_vars로 단일열이 된 열의 이름을 지정.
        • 지정하지 않으면 컬럼 이름은 variable이 된다.
    • value_name
      • value_vars에 지정된 열들의 값들이 변환된 컬럼의 이름 지정
        • 지정하지 않으면 컬럼이름은 value가 된다.
  • melt한 경우, index 이름은 무시된다.
    • RangeIndex로 대체된다.
    • index를 유지하려면 reset_index를 이용해 value로 뺀 뒤 해야 한다.
  • stack은 열 이름을 index 명으로 정돈(변경)한다.

5. pivot


profile
대한민국 4차 산업의 역군을 꿈꾸며.

0개의 댓글